使用JQuery调用asp:linkbutton单击函数

时间:2009-04-06 03:48:23

标签: asp.net javascript jquery

我一直在玩搜索控件,我注意到当你尝试从文本框中按Enter键时它会提交表单,但不会点击搜索按钮(就像我想要的那样)。

我的标记是:

<div>
    <span>Search</span>
    <asp:TextBox ID="txtSearch" runat="server" Width="170"
        onkeydown="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {$('#<%=lkbSearch.ClientID %>').click();return false;} else return true; ">
    </asp:TextBox>
</div>
<asp:LinkButton ID="lkbSearch" runat="server" CssClass="searchButton">
    <asp:Image ID="imgSearch" runat="server" ImageUrl="~/Images/Master/button_go.gif" />
</asp:LinkButton>

我将onkeydown事件添加到文本框中,然后运行,但是当我尝试使用JQuery从按钮调用Click()函数时,它什么也没做。

如何在文本框中按Enter键时“点击”按钮?

3 个答案:

答案 0 :(得分:2)

由于LinkButton作为<a>添加到页面中。当您使用jQuery选择按钮时,您将获得包装在jQuery中的元素。由于调用click事件,因此仅触发click事件,而不遵循href

以下代码将模拟单击按钮:

$('#<%= linkbuttonid.ClientID%>')[0].click();

您可以将'#<%= linkbuttonid.ClientID%>'替换为任何将获得正确元素的选择器。但是有必要包含[0],以便在<a>本身上调用点击。

或者,您可以将页面重新路由到href:

window.location = $('yourselector').attr('href');

有关在javascript中为锚标记调用click事件的详细信息,请参阅this question

答案 1 :(得分:1)

这不涉及jQuery

Page.RegisterHiddenField( "__EVENTTARGET", lkbSearch.ClientID );

我看到你在div中,如果你有一个面板,那就是DefaultButton属性。

如果你真的想使用jQuery,那么你可以使用ClientScript.GetPostBackEventReference

祝你好运: - )

答案 2 :(得分:0)

在玩了几件不同的事情后,我终于找到了解决方案。

我将文本框和按钮包装在asp:panel控件中,并将默认按钮设置为我的LinkBut​​ton的ID,但发现面板不能将LinkBut​​tons作为DefaultButton。

但是将链接按钮更改为ImageButton并在面板的DefaultButton字段中使用其ID非常有效。

<asp:Panel ID="pnlSearch" runat="server" DefaultButton="imbSearch">
...
</asp:Panel>