我有一个非常简单的JQuery,用户点击特定按钮时点击“输入”键:
$('#<%= txtSearch.ClientID %>').keyup(function (event) {
if (event.keyCode == 13) {
$('#<%= btnSearchByRef.ClientID %>').click();
}
});
按钮单击将触发回发并在同一页面中显示搜索结果。
这只是第一次有效。在第一次之后,永远不会触发此功能。
知道什么是错的吗?感谢。
答案 0 :(得分: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控件具有焦点并按下回车键时单击的按钮。
答案 1 :(得分:0)
也许委托的事件处理程序可以工作?试试这个:
$('body').on("keyup",'#<%= txtSearch.ClientID %>', function(){
if (event.keyCode == 13) {
$('#<%= btnSearchByRef.ClientID %>').click();
}
});
解释: 添加事件处理程序时,它只会绑定一次元素。如果刷新该元素,则绑定将丢失。
但是,这是委派事件处理程序(非常)方便的地方。绑定到不会刷新的元素(在本例中为“body”)。
在上面的代码中,如果我没有记错,每次点击“body”时,都会测试'#&lt;%= txtSearch.ClientID%&gt;'存在。如果是的话,它应该执行你的命令。