Jquery 按下文本框的enter键时发生火灾事件

Jquery 按下文本框的enter键时发生火灾事件,jquery,asp.net,event-handling,Jquery,Asp.net,Event Handling,我有以下asp.net文本框控件 <asp:TextBox ID="txtAdd" runat="server" /> 在用户在这个文本框中写入一些内容并按下ENTER键之后,我想从codebehind运行一些代码 我该怎么办 使用jQuery,我捕获了ENTER键并触发了一些隐藏按钮事件 $(document).ready(function(){ $(window).keydown(function(e){ if(e.keyCode == 13) $('#

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

<asp:TextBox ID="txtAdd" runat="server" />

在用户在这个文本框中写入一些内容并按下ENTER键之后,我想从codebehind运行一些代码

我该怎么办

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

$(document).ready(function(){ 
   $(window).keydown(function(e){
      if(e.keyCode == 13) $('#<% addbtn.ClientID %>'.click();
   }); 
});
$(文档).ready(函数(){
$(窗口).keydown(函数(e){
如果(e.keyCode==13)$(“#”),请单击();
}); 
});
有更好的方法吗?

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" />

ahaliav fox的答案是正确的,但是有一个小的编码问题。
改变



它区分大小写

错误14“System.Web.UI.WebControls.Button”不包含“UniqueId”的定义,并且找不到接受“System.Web.UI.WebControls.Button”类型的第一个参数的扩展方法“UniqueId”(是否缺少using指令或程序集引用?)

注意:在搜索答案之前,我自己在
AutoPostBack
上尝试了
TextChanged
事件,虽然它几乎是正确的,但它并没有给出我想要的结果,也没有给出所问的问题。它会在对
文本框
失去焦点时触发,而不是在按下返回键时触发

  • 将文本框包装在
    asp:Panel
    标记中

  • 隐藏具有执行所需操作的单击事件的按钮,并为
    属性赋予
    DefaultButton
    隐藏按钮的ID

  • 
    
    试试这个选项

    在捕获IsPostback之前,更新页面加载事件中的编码部分

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

    您可以将文本框和按钮包装在ASP: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>
    
    
    
    现在,只要焦点位于面板内,按下enter键时就会触发“SubmitButton_Click”事件

    我的jQuery支持的解决方案如下:)

    文本元素:

    <asp:TextBox ID="txtTextBox" ClientIDMode="Static" onkeypress="return EnterEvent(event);" runat="server"></asp:TextBox>
    <asp:Button ID="btnSubmitButton" ClientIDMode="Static" OnClick="btnSubmitButton_Click" runat="server" Text="Submit Form" />
    
    <script type="text/javascript" language="javascript">
        function fnCheckValue() {
            var myVal = $("#txtTextBox").val();
            if (myVal == "") {
                alert("Blank message");
                return false;
            }
            else {
                return true;
            }
        }
    
        function EnterEvent(e) {
            if (e.keyCode == 13) {
                if (fnCheckValue()) {
                    $("#btnSubmitButton").trigger("click");
                } else {
                    return false;
                }
            }
        }
    
        $("#btnSubmitButton").click(function () {
            return fnCheckValue();
        });
    </script>
    
    
    
    后面的Javascript:

    <asp:TextBox ID="txtTextBox" ClientIDMode="Static" onkeypress="return EnterEvent(event);" runat="server"></asp:TextBox>
    <asp:Button ID="btnSubmitButton" ClientIDMode="Static" OnClick="btnSubmitButton_Click" runat="server" Text="Submit Form" />
    
    <script type="text/javascript" language="javascript">
        function fnCheckValue() {
            var myVal = $("#txtTextBox").val();
            if (myVal == "") {
                alert("Blank message");
                return false;
            }
            else {
                return true;
            }
        }
    
        function EnterEvent(e) {
            if (e.keyCode == 13) {
                if (fnCheckValue()) {
                    $("#btnSubmitButton").trigger("click");
                } else {
                    return false;
                }
            }
        }
    
        $("#btnSubmitButton").click(function () {
            return fnCheckValue();
        });
    </script>
    
    
    函数fnCheckValue(){
    var myVal=$(“#txtextbox”).val();
    如果(myVal==“”){
    警报(“空白消息”);
    返回false;
    }
    否则{
    返回true;
    }
    }
    事件函数(e){
    如果(e.keyCode==13){
    if(fnCheckValue()){
    $(“#btnSubmitButton”)。触发器(“单击”);
    }否则{
    返回false;
    }
    }
    }
    $(“#btnSubmitButton”)。单击(函数(){
    返回fnCheckValue();
    });
    
    我的2c。。我使用过javascript,但发现它做了一些出乎意料的事情

    按照上面许多帖子的建议,使用面板的defaultButton属性/属性。它可靠(简单),在我测试过的所有浏览器中都能正常工作。

    请尝试以下操作: Aspx:

    
    
    和js:

    <script type="text/javascript">
    $('.text_cs').on('change', function () {
    var pid = $(this).val();
    console.log("Value text: " + pid);
    });
    </script>
    
    
    $('.text_cs')。关于('change',函数(){
    var pid=$(this.val();
    console.log(“值文本:”+pid);
    });
    
    按钮ID应为“btnSubmit”是吗?@Rahul它不应该捕捉某些键,只有当按下enter键时,这应该是正确答案。更好的解决方案!虽然从ASP的角度来看,这在技术上是“正确”的答案,但不一定是最好的答案。当选择元素或文件输入元素具有焦点且按下enter键时,使用此解决方案将更改大多数(所有?)浏览器的默认行为。通常,应打开或选择“选择选项”,并打开文件浏览器。相反,表单是提交的。另外,由于panel div,页面中添加了额外的可能不必要的HTML。我更喜欢使用JavaScript和类名的更干净、自定义的解决方案。原始问题包括ASP.NET,所以是的,带panel的答案实际上是最好的答案。当然,对于其他一些没有ASP.NET的情况,或者以更复杂的形式,还有其他实现。在评论部分添加不严格适用的疑问会使仍在学习的人更加困难。另一个选项是给asp:TextBox一个唯一的类,并在javascript do$(“.MyUniqueButtonClass”)[0]中添加。单击()。这比u doPostBack更简单,对asp.net实现细节的依赖更少。它不应该是
    UniqueID
    而不是
    UniqueID
    ?坚持6个字符的编辑限制:(Sue Maurizio-Currect,应该是唯一的,我会解决它,谢谢关于Numpad的输入这几乎是一个已经被接受的答案的精确副本,它将如何增加问题的价值?谢谢Marco的评论。在我的情况下,这是一个解决方案。当我有不同的控制,我需要给他们相同的行为。我可以使用我只分享了我在项目中使用的经验。
    <asp:TextBox ID="txtTextBox" ClientIDMode="Static" onkeypress="return EnterEvent(event);" runat="server"></asp:TextBox>
    <asp:Button ID="btnSubmitButton" ClientIDMode="Static" OnClick="btnSubmitButton_Click" runat="server" Text="Submit Form" />
    
    <script type="text/javascript" language="javascript">
        function fnCheckValue() {
            var myVal = $("#txtTextBox").val();
            if (myVal == "") {
                alert("Blank message");
                return false;
            }
            else {
                return true;
            }
        }
    
        function EnterEvent(e) {
            if (e.keyCode == 13) {
                if (fnCheckValue()) {
                    $("#btnSubmitButton").trigger("click");
                } else {
                    return false;
                }
            }
        }
    
        $("#btnSubmitButton").click(function () {
            return fnCheckValue();
        });
    </script>
    
    <asp:Panel ID="Panel2" runat="server" DefaultButton="bttxt">
        <telerik:RadNumericTextBox ID="txt" runat="server">
        </telerik:RadNumericTextBox>
        <asp:LinkButton ID="bttxt" runat="server" Style="display: none;" OnClick="bttxt_Click" />
    </asp:Panel>
    
    protected void txt_TextChanged(object sender, EventArgs e)
    {
        //enter code here
    }
    
    <asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="EnterEvent(event, someMethod)"></asp:TextBox>    
    <asp:Button ID="Button1" onclick="someMethod()" runat="server" Text="Button" />
    
    function EnterEvent(e, callback) {
            if (e.keyCode == 13) {
                callback();
            }
        }
    
    <input type="text" id="txtCode" name="name" class="text_cs">
    
    <script type="text/javascript">
    $('.text_cs').on('change', function () {
    var pid = $(this).val();
    console.log("Value text: " + pid);
    });
    </script>