0

我有一个非常简单的 JQuery,它让用户点击“输入”键作为点击特定按钮:

$('#<%= txtSearch.ClientID %>').keyup(function (event) {
            if (event.keyCode == 13) {
                $('#<%= btnSearchByRef.ClientID %>').click();
            }
        });

单击按钮将触发回发并在同一页面中显示搜索结果。

这仅在第一次时才有效。在第一次之后,这个功能永远不会被触发。

知道有什么问题吗?谢谢。

4

2 回答 2

1

既然您使用的是网络表单,为什么不使用DefaultButton属性呢?

<form runat="server">
    <asp:Panel runat="server" DefaultButton="button1">
        <asp:TextBox runat="server" />
        <asp:Button id="button1" Text="Default" runat="server" />
    </asp:Panel>
</form>

此属性用于指定当 Panel 控件具有焦点并按下 Enter 键时单击哪个按钮。

于 2013-07-18T23:33:32.817 回答
0

也许委托的事件处理程序会起作用?尝试这个:

$('body').on("keyup",'#<%= txtSearch.ClientID %>', function(){
        if (event.keyCode == 13) {
            $('#<%= btnSearchByRef.ClientID %>').click();
        }
});

解释:当你添加一个事件处理程序时,它只会绑定到一个元素一次。如果该元素被刷新,则绑定丢失。

但是,这就是委托事件处理程序(真正)派上用场的地方。绑定到不会刷新的元素(在本例中为“body”)。

在上面的代码中,如果我没记错的话,每次点击“body”时,都会测试“#<%= txtSearch.ClientID %>”是否存在。然后,如果确实如此,它应该执行您的命令。

于 2013-07-18T23:40:00.987 回答