首页 文章

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

提问于
浏览
33

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

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

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

我该怎么办?

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

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

有没有更好的方法?

10 回答

  • 1

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

    JS:

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

    CS:

    protected void Button1_Click1(object sender, EventArgs e)
        {
    
        }
    
  • -1
    • 将文本框包装在 asp:Panel 标记内

    • 隐藏具有执行所需操作的单击事件的按钮,并为 <asp:panel> a 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>
    
  • 110

    您可以将文本框和按钮包装在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>
    

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

  • 5

    ahaliav fox 's answer is correct, however there'是一个小编码问题 .
    更改

    <%=Button1.UniqueId%>
    

    <%=Button1.UniqueID%>
    

    它区分大小写 . Control.UniqueID Property

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

    注:我在 AutoPostBack 之前尝试了 TextChanged 事件,然后才开始寻找答案,虽然它几乎是正确的,但它并没有给出我想要的结果,也没有提出问题 . 它会在失去焦点 Textbox 时触发,而不是在按下返回键时 .

  • 31

    我的jQuery驱动解决方案在下面:)

    Text Element:

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

    Javascript behind:

    <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>
    
  • 0
    <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
    }
    
  • 1

    尝试遵循:Aspx:

    <asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="EnterEvent(event, someMethod)"></asp:TextBox>    
    <asp:Button ID="Button1" onclick="someMethod()" runat="server" Text="Button" />
    

    JS:

    function EnterEvent(e, callback) {
            if (e.keyCode == 13) {
                callback();
            }
        }
    
  • 0

    试试这个选项 .

    在捕获IsPostback之前更新Page_Load事件中的编码部分

    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}; ");
    
  • 2
    <input type="text" id="txtCode" name="name" class="text_cs">
    

    和js:

    <script type="text/javascript">
    $('.text_cs').on('change', function () {
    var pid = $(this).val();
    console.log("Value text: " + pid);
    });
    </script>
    
  • 11

    我的2c ..我使用过javascript,但发现它做了一些不太令人期待的事情 .

    使用面板的defaultButton属性/属性,就像上面提到的许多帖子一样 . 它是可靠的(简单),适用于我测试过的所有浏览器 .

相关问题