2011-09-14 30 views
0

私はC#(それはウェブサイトのアプリケーションではない)とASP.NETで簡単なチャットシステムを開発しています。私はTextBoxを含むチャットウィンドウを表示しているので、ユーザーはその中にメッセージを書くことができます。私が望むのは、ユーザーがENTERキーを押すと、その押された押されたイベントをキャプチャでき、.csファイル内にある関数を呼び出すことができるということです。どうやってやるの?これは私のプロジェクトからのコードセグメントである:TextBoxで押されたENTERキーを取り込む方法は?

<!-- Some code here --> 

    <asp:textbox TextMode="Multiline" 
    Columns="28" 
    id="Textbox1" 
    Rows="5" 
    runat="server" 
    BorderStyle="Solid" 
    BorderColor="Bisque" 
    class="msg-area"> 
    </asp:textbox> 

</asp:Panel> 

はありがとうございました。

+0

含まれているフォームのサブミットイベントに登録することはどうですか? – CodesInChaos

+0

私はそれをする方法を考えていない。フォームはマスターファイルに作成され、このファイル(チャットウィンドウの)には、上記のTextBoxを含むasp:Panelタグのみがあります(上のコードでわかるように)! – Azeem

+0

使用しているJavaScriptライブラリによって異なります。 jQueryについては、http://api.jquery.com/submit/を見てください。おそらく、ajaxリクエストを送信ハンドラに入れる必要があります。 – CodesInChaos

答えて

0

複数行のテキストボックスなので、キープレスイベントの1つを処理し、フォームをポストバックしてサーバー上で処理できるようにする必要があります。コールバックまたはajax呼び出しを行うこともできますが、JavaScriptイベントハンドラを使用してサーバーへの呼び出しを開始する必要があるため、C#コードを実行することができます。あなたのやろうとしていることや、より詳細な答えを得るためにあなたの使っていることについて、より詳細な情報が必要です。

0

AJAXを使ってクライアント側でこのようなことをするのが最善の方法だと思います。 javascriptでは、Enterキーを取得するにはasciiの値を使用します。ユーザーがキーを押すと、データを収集してajax呼び出しを行います。サーバー側では、WebMethodを使用して呼び出しを処理します。 jQueryを使って、IDではなくそのクラスでテキストボックスを参照してください。asp.netはIDを自分のIDに追加するので、IDは機能しません。あなたは、サーバー側で、

$.ajax({ 
    type: "POST", 
    url: "yourwebpage.aspx/PostChat, 
    contentType: "application/json; charset=utf-8", 
    processData: false, 
    global: false, 
    success: function (data) { 
     ajaxData = data; 
     ajaxResult = true; 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     ajaxResult = false; 
    } 
}); 

最後に:だから、テキストボックスの外の値を取得するには、サーバー側で、あなたの関数を呼び出すこのような何かを行うには

var msgValue = $(".msg-area").val() 

を行うにはそうのような機能を追加します。

[System.Web.Services.WebMethod] 
    public static void PostChat() 
    { 
     /* post chat code here */ 
    } 

ここに取り残さ詳細のカップルは(あなたがJSONオブジェクトおよびデシリアライズとしてPostChat(SomeObjectContainingChatDataのようないくつかのデータ)を渡すことになるでしょうPostChat()メソッドのようにありますが、 buこれはあなたに一般的なアイデアを与えます! jQueryを介してテキストボックスを捕捉

0

クイック実装:

$.fn.captureEnter = function(options) { 
// Parameters = OBJECT {action, preventDefault} 
// action - Javascript function to be called upon the enter keypress. Send NULL to perform NO ACTION 
// preventDefault - Set to FALSE if you don't want to return FALSE 
var defaults = { 
    action: function() { 
     alert('The enter button has been captured. Please provide a function to run on enter.'); 
    }, 
    preventDefault: true 
}; 
options = $.extend(defaults, options); 

return this.each(function() { 
    var el = this; 
    $(el).keypress(function(e) { 
     var code = e.keyCode || e.which; 
     if (code == 13) { //Enter keycode 
      if ((typeof options.action) == "function") { 
       options.action(el); 
      } 

      if (options.preventDefault) { 
       e.preventDefault(); 
      } 

     } 
    }); 
}); 

}。

$('TEXTBOX').captureEnter({ 
    action: postMessageAjaxFunction 
}); 
関連する問題