火灾事件输入键按下文本框

ALA*_*LAN 33 asp.net jquery event-handling

我有以下asp.net文本框控件.

<asp:TextBox ID="txtAdd" runat="server" />
Run Code Online (Sandbox Code Playgroud)

用户在此文本框中写入内容并按下ENTER键后,我想从代码隐藏中运行一些代码.

我该怎么办?

使用jQuery我捕获了ENTER键并触发了一些隐藏的按钮事件

$(document).ready(function(){ 
   $(window).keydown(function(e){
      if(e.keyCode == 13) $('#<% addbtn.ClientID %>'.click();
   }); 
});
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法?

Jim*_*son 111

  1. 将文本框包装在asp:Panel标签内

  2. 隐藏有一个click事件,你想要做的事情一个按钮,然后提供<asp:panel>一个DefaultButton带有隐藏按钮的ID属性.

<asp:Panel runat="server" DefaultButton="Button1">
   <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>    
   <asp:Button ID="Button1" runat="server" style="display:none" OnClick="Button1_Click" />
</asp:Panel>
Run Code Online (Sandbox Code Playgroud)

  • 比接受的答案要多得多. (17认同)
  • 实际上,这应该是公认的答案. (11认同)

aha*_*fox 31

ASPX:

<asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="return EnterEvent(event)"></asp:TextBox>    
<asp:Button ID="Button1" runat="server" style="display:none" Text="Button" />
Run Code Online (Sandbox Code Playgroud)

JS:

function EnterEvent(e) {
        if (e.keyCode == 13) {
            __doPostBack('<%=Button1.UniqueID%>', "");
        }
    }
Run Code Online (Sandbox Code Playgroud)

CS:

protected void Button1_Click1(object sender, EventArgs e)
    {

    }
Run Code Online (Sandbox Code Playgroud)


wbl*_*nks 11

您可以将文本框和按钮包装在ASP:Panel中,并将Panel的DefaultButton属性设置为Submit按钮的Id.

<asp:Panel ID="Panel1" runat="server" DefaultButton="SubmitButton">
    <asp:TextBox ID="TextBox1" runat="server" />
    <asp:Button ID="SubmitButton" runat="server" Text="Submit" OnClick="SubmitButton_Click" />
</asp:Panel>
Run Code Online (Sandbox Code Playgroud)

现在,无论何时焦点都在Panel中,按下enter键时将触发'SubmitButton_Click'事件.


Mat*_*ord 5

ahaliav fox的回答是正确的,但是编码问题很小.
更改

<%=Button1.UniqueId%> 
Run Code Online (Sandbox Code Playgroud)

<%=Button1.UniqueID%> 
Run Code Online (Sandbox Code Playgroud)

它区分大小写.Control.UniqueID属性

错误14'System.Web.UI.WebControls.Button'不包含'UniqueId'的定义,并且没有扩展方法'UniqueId'接受类型'System.Web.UI.WebControls.Button'的第一个参数可以找到(你错过了using指令或程序集引用吗?)

Nb我在搜索答案之前TextChanged自己尝试了这个事件AutoPostBack,虽然它几乎是正确的,但它没有给出我想要的结果,也没有提出问题.它会在失去焦点时触发,Textbox而不是在按下返回键时.