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

时间:2012-10-31 13:10:03

标签: jquery asp.net event-handling

我有以下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 个答案:

答案 0 :(得分:110)

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

  2. 隐藏具有执行所需操作的Click事件的按钮,并为<asp:panel> DefaultButton属性提供隐藏按钮的ID。

  3. <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>
    

答案 1 :(得分: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" />

JS:

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

CS:

protected void Button1_Click1(object sender, EventArgs e)
    {

    }

答案 2 :(得分: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>

现在,只要焦点位于Panel中,按下Enter键时就会触发'SubmitButton_Click'事件。

答案 3 :(得分:5)

ahaliav fox的回答是正确的,但是编码问题很小 变化

<%=Button1.UniqueId%> 

<%=Button1.UniqueID%> 

区分大小写。 Control.UniqueID Property

  

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

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

答案 4 :(得分:2)

  

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

Javascript背后:

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

答案 5 :(得分:1)

<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
}

答案 6 :(得分: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();
        }
    }

答案 7 :(得分: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}; ");

答案 8 :(得分:0)

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

答案 9 :(得分:-1)

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

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