为什么JQuery函数只在同一页面上触发一次

时间:2013-07-18 23:27:31

标签: jquery

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

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

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

这只是第一次有效。在第一次之后,永远不会触发此功能。

知道什么是错的吗?感谢。

2 个答案:

答案 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;'存在。如果是的话,它应该执行你的命令。