在aspx中,当在文本框上按下“Enter”键时如何触发按钮单击事件,而按钮单击事件在源cs文件中定义。

5

我希望在按下“enter”键时触发在aspx中描述的txtSuiteGroupName中的btnSearchSuiteGroup_Click事件,代码如下:

<asp:TextBox ID="txtSuiteGroupName" runat="server" clientidmode="Static" CssClass="DD" onkeypress="return searchKeyPress(event)"></asp:TextBox>
<asp:Button ID="btnSearchSuiteGroup" runat="server" Text="Search"  CssClass="DD" Width="64px" onclick="btnSearchSuiteGroup_Click" />
<script type="text/javascript">
    function searchKeyPress(e) {

        // look for window.event in case event isn't passed in
        if (typeof e == 'undefined' && window.event) { e = window.event; }
        if (e.keyCode == 13) {
            document.getElementById('<%=btnSearchSuiteGroup.ClientID%>').click();
        }
    }
</script>

然而,btnSearchSuiteGroup_Click在源代码的cs文件中被定义:

protected void btnSearchSuiteGroup_Click(object sender, EventArgs e)
{
    this.LinqDataSource1.WhereParameters["SuiteGroupName"].DefaultValue = this.txtSuiteGroupName.Text;
    this.GridView1.DataBind();
    if (GridView1.Rows.Count == 0)
        Response.Write("<script language='javascript'>window.alert('No record found!')</script>");
}

当我浏览网站时,文本框的按键无法触发按钮的点击事件,代码有什么问题吗?

以上代码对我触发了 btnSearchSuiteGroup_Click。你能否尝试调试并在 btnSearchSuiteGroup_Click 内设置断点? - ekad
2个回答

10
如果您使用 Panel ,则无需使用任何 JavaScript 函数。 您可以像下面这样为面板指定默认的 button Id:
    <asp:Panel runat="server" DefaultButton="btnSearchSuiteGroup">
       <asp:TextBox ID="txtSuiteGroupName" runat="server" clientidmode="Static" CssClass="DD">          
       </asp:TextBox>
        <asp:Button ID="btnSearchSuiteGroup" runat="server" Text="Search"  CssClass="DD" Width="64px" onclick="btnSearchSuiteGroup_Click" />
        </asp:Button>
    </asp:Panel>

当然,您可以在单个页面上拥有多个面板,为不同的面板分配不同的默认按钮!

了解更多关于Panel.DefaultButton属性的信息。


0
我建议采用以下方法: 1. 创建一个名为“ButtonClick”的函数,并将所有代码放入“btnSearchSuiteGroup_Click”函数中。 2. 通过查看this thread,为文本框“txtSuiteGroupName”添加“onkeypress”事件。 3. 每当上述事件被触发时,请检查输入的键是否为“Enter”。 4. 如果键是“Enter”键,则调用函数“ButtonClick”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接