我一直在玩搜索控件,我注意到当你尝试从文本框中按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键时“点击”按钮?
答案 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控件中,并将默认按钮设置为我的LinkButton的ID,但发现面板不能将LinkButtons作为DefaultButton。
但是将链接按钮更改为ImageButton并在面板的DefaultButton字段中使用其ID非常有效。
<asp:Panel ID="pnlSearch" runat="server" DefaultButton="imbSearch">
...
</asp:Panel>