2012-06-14 80 views
7

我偶然發現了ASP.NET Web應用程序的一個小問題。ASP.NET鏈接用按鈕輸入鍵?

我在我的頁面上有幾個按鈕,我想通過按Enter鍵訪問(取決於哪個TextBox是關注的)。

谷歌搜索幫助我,我想,但沒有。

這是我發現:

tbEmail.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById('" + btRegister.UniqueID + "').click();return false;}} else {return true}; "); 

這似乎並不工作,但它仍然按下另一個按鈕,我不想在這一刻被按下。

有什麼建議嗎?

回答

21

看起來你正在使用Web窗體。

您可以在Panel的內部包裝您正在做的事情,並在面板內設置DefaultButton屬性。

<asp:Panel ID="LoginPanel" runat="server" DefaultButton="btLogin"> 
    <asp:TextBox ID="txtUser" runat="server" /> 
    <asp:TextBox ID="txtPass" runat="server" /> 
    <asp:Button ID="btLogin" runat="server">Login</asp:Button> 
</asp:Panel> 

當用戶在任何txtUsertxtPass輸入的數據,然後按下回車鍵,就會觸發按鈕btLogin

+0

感謝您的詳細信息,真的幫了我一把! – James

+0

我正在修改股票'Login.aspx'頁面,它的工作原理也一樣。該按鈕缺少ID屬性,CommandName是如此不知道它是否會工作。 – strider

3

爲此,使用jQuery要容易得多。綁定到keypress事件。

+1

我同意。 jQuery封裝了所有這些令人討厭的細節,並且是天賜之物。 – Jeremy

+1

感謝您的答案,將來肯定會使用這個! – James

4

不要嘗試和使用JavaScript - 將您的表單放置在<asp:Panel>內,並將DefaultButton屬性設置爲您按鈕的ID。

0

您可以使用一個按鍵事件爲每個文本框將做不同的事情..所以:

private void a_keyPress(object sender, KeyPressEventArgs e) 
{ 
    RadTextBox myBox = (RadTextBox)sender; 

    if (e.KeyChar == (char)Keys.Return) 
    { 
     if (myBox.ID == "textbox1") 
     // then do stuff... 
    } 
    else if //do stuff... 
}