2011-09-14 58 views
0

我正在用C#開發一個簡單的聊天系統(其網站不是Windows應用程序)。我正在顯示一個包含TextBox的聊天窗口,以便用戶可以在其中寫入他/她的消息。我想要的是,當用戶按ENTER鍵,然後我將能夠捕獲該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

我沒有想法如何做到這一點。表單是在主文件中創建的,在這個文件(聊天窗口)中,只有asp:Panel標籤包含了這個TextBox(就像你在上面的代碼中看到的那樣)! – Azeem

+0

取決於您正在使用的JavaScript庫。對於jQuery,請看:http://api.jquery.com/submit/然後,您可能需要將ajax請求放入提交處理程序。 – CodesInChaos

回答

0

由於它是一個多行文本框,您將不得不處理其中一個按鍵事件,並將其發回,以便您可以在服務器上處理它。你也可以做一個回調或ajax調用,但無論哪種方式,你需要一個JavaScript事件處理程序啓動一個調用服務器,以便您的C#代碼可以運行。我需要更多關於你想要做什麼以及你用什麼來給出更詳細答案的細節。

0

我認爲在AJAX客戶端做這種事情是最好的方法。在javascript中,爲了捕獲輸入密鑰,請使用ascii值13.如果用戶按下該鍵,則收集數據並進行ajax調用。在服務器端使用WebMethod來處理呼叫。使用jQuery,通過它的類引用你的文本框,而不是ID ...這個ID將不起作用,因爲asp.net在呈現頁面時會將它自己的標識符添加到id。所以,走出文本框的值,做

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

要打電話給你的服務器端功能,做這樣的事情:

$.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; 
    } 
}); 

最後,在服務器端,你添加像這樣一個功能:

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

有在這裏留下了一對夫婦的詳細信息(如在你將要像PostChat(SomeObjectContainingChatData一些數據)來傳遞一個JSON對象和反序列化PostChat()方法, BU這給你一般的想法!

0

快速執行捕獲通過jQuery文本框:

$.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 
}); 
相關問題