[英]Can Jquery trigger a server-side “selectedIndexChanged” event on a DropDownList?
[英]DropDownList Postback on ENTER Keypress Not Firing the Server-Side Event
问候!
我有一个简单的导航菜单,其中包含一个asp:DropDownList和一个asp:Button。 用户从下拉菜单中选择一个项目,然后单击按钮以转到新的URL。 我希望能够在用户选择下拉列表项时按ENTER键时提供支持,以便复制用户的行为,就像单击按钮一样。
到目前为止,这是我所拥有的:
<asp:DropDownList ID="ddlMenu"
runat="server"
onkeypress="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {__doPostBack('GoButton',''); return false;}" />
<asp:Button ID="btnGoButton" runat="server" onclick="GoButton_Click"/>
该按钮的点击代码为:
protected void GoButton_Click(object sender, EventArgs e)
{
string l_url = ddlMenu.SelectedItem.Value;
Response.Redirect(l_url);
}
但是,每次我按ENTER键时,页面都会回发,但是按钮的客户端事件处理程序不会触发。 我想念什么吗?
您是否尝试过使用默认按钮将控件包装在面板中? 我知道它适用于文本框
<asp:Panel runat="server" id="searchPanel" DefaultButton="btnGoButton">
<asp:DropDownList ID="ddlMenu" runat="server" />
<asp:Button ID="btnGoButton" runat="server" onclick="GoButton_Click"/>
</asp:Panel>
好吧,您使用的是错误的按钮ID。
__doPostBack方法中的ID必须是触发器控件的UniqueID。 您说触发器为“ GoButton”,但其ID为“ btnGoButton”。
服务器无法知道您的“ GoButton”实际上是btnGoButton。
还要记住,名称修改(一种确保控件具有唯一名称的方法)可能会使UniqueID更加混乱。
尝试这样写:__doPostBack('<%#btnGoButton.UniqueID%>','');
或将其附加在后面的代码中。
ddlMenu.Attributes.Add(“ onkeypress”,string.Format(“ __ doPostBack('{0}','');”,btnGoButton.UniqueID);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.