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();
   }); 
});

有没有更好的办法?

4

11 回答 11

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

  2. 隐藏一个具有单击事件的按钮,该事件执行您想要完成的操作,并提供<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>
于 2013-04-25T11:08:13.957 回答
32

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

    }
于 2012-10-31T13:31:28.000 回答
11

您可以将文本框和按钮包装在 ASP:Panel 中,并将 Panel 的 DefaultButton 属性设置为您的提交按钮的 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”事件。

于 2013-08-03T11:29:14.577 回答
5

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

<%=Button1.UniqueId%> 

<%=Button1.UniqueID%> 

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

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

注意,在寻找答案之前,我自己尝试了该TextChanged事件AutoPostBack,尽管它几乎是正确的,但它并没有给出我想要的结果,也没有给出所问的问题。它会在失去焦点时触发,Textbox而不是在按下返回键时触发。

于 2013-04-25T10:15:04.307 回答
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>
于 2013-08-19T07:51:12.590 回答
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
}
于 2013-11-08T09:01:22.850 回答
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();
        }
    }
于 2016-06-23T18:43:54.940 回答
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}; ");
于 2013-05-29T07:04:15.583 回答
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>
于 2017-01-03T02:39:48.887 回答
0
<script type="text/javascript">
    function uniKeyCode(event) {
        var key = event.keyCode;
        if(key == 13){
            __doPostBack('ctl00$MainContent$btnFind', '');
        }
    }
</script>
<asp:TextBox ID="txt_MBCID" CssClass="form-control" placeholder="" runat="server" data-toggle="tooltip" title="ស្វែងរក-តាមរយះលេខMBWin CID" onkeydown="uniKeyCode(event)" data-placement="left"></asp:TextBox>
<asp:LinkButton ID="btnFind" AccessKey="1" runat="server" data-placement="right" title="Search_by_AccountID" data-toggle="tooltip" CssClass="input-group-addon" Text="Find" OnClick="btnFind_Click" ><span class="glyphicon glyphicon-search"></span></asp:LinkButton>
                                                   
于 2021-09-14T09:28:07.480 回答
-1

我的 2c .. 我使用过 javascript,但发现它做了一些意想不到的事情。

正如上述许多帖子所建议的那样,使用面板的 defaultButton 属性/属性。它是可靠的(简单的)并且可以在我测试过的所有浏览器中运行。

于 2014-10-03T13:49:48.030 回答