【问题标题】:asp.net dropdownlist avoid firing selectedindexchange on first keystrokeasp.net 下拉列表避免在第一次击键时触发 selectedindexchange
【发布时间】:2017-04-14 20:47:44
【问题描述】:
我有一个带有 SelectedindexChanged 事件的 asp.net 下拉列表,它根据所选值更改其他一些控件值。
说,下拉列表包含国家/地区列表。现在,用户通过单击鼠标打开下拉菜单,然后用户可以输入 In 以选择 India,然后按 Enter 以触发“SelectedIndexChanged”。这是正确/必需的行为。
但是,当用户通过按上一个控件上的选项卡并开始输入(例如,我打算输入 IN 以选择印度)到达此下拉列表时,它会在第一次击键 (I) 时触发 SelectedIndexChanged 事件,从而导致更改并将国家/地区设置为冰岛.我们能避免这种情况吗?或在焦点或第一次按键时打开下拉菜单。还是别的什么想法?
【问题讨论】:
标签:
javascript
c#
jquery
asp.net
dropdown
【解决方案1】:
您可以用来解决这个问题的一种方法,尽管有点模糊,是一个带有display: none; 的<asp:Button>。您可以将下拉事件移动到按钮的 OnClick,并在下拉列表失去焦点时使用 JavaScript 触发。
jQuery
$("#dropdown").focusout(function() { //When dropdown loses focus
var v = $(this).val();
if (v.length) { //If an item is selected
$("#btnHidden").trigger("click"); //Trigger hidden button click
}
});
平均售价
<asp:DropDownList runat="server" ClientIDMode="Static" ID="dropdown" AutoPostBack="false">
<asp:ListItem text="Select something..." val=""></asp:ListItem>
<asp:ListItem text="Choice One" val="1"></asp:ListItem>
<asp:ListItem text="Choice Two" val="2"></asp:ListItem>
</asp:DropDownList>
<asp:Button runat="server" ClientIDMode="Static" ID="btnHidden" CssClass="hide" OnClick="btnHidden_Click"></asp:Button>
C#
protected void btnHidden_Click(object sender, EventArgs e)
{
//Do Dropdown Stuff
}