如何触发下拉列表's SelectedIndexChanged事件,点击enter或鼠标左键
本文关键字:enter 点击 鼠标 事件 SelectedIndexChanged 下拉列表 何触发 | 更新日期: 2023-09-27 18:10:55
我在页面上有一个下拉列表;
<asp:DropDownList ID="ddlCities" runat="server"
AutoPostBack="true" ClientIDMode="Static"
OnSelectedIndexChanged="ddlCities_SelectedIndexChanged">
</asp:DropDownList>
这在正常情况下工作得很好。但是由于客户的行为,我不得不改变下拉列表的行为。
所以我的意思是,当客户端关注下拉列表并向下移动到其他列表项时,SelectedIndexChanged
事件被触发。但我不想这样。我想,当用户聚焦下拉列表中的一个元素时,SelectedIndexChanged
事件将不会被触发,而按回车键或鼠标左键事件将只触发SelectedIndexChanged
事件。
有办法做到这一点吗?
我认为如果你有jQuery,你可以在客户端做到这一点。Asp。. NET下拉列表呈现为HTML选择元素。
还没有测试过,但我认为你可以在更改事件中阻止回发,并在按下enter键时触发它…
$("#idofselectelement").change(function(e) {
// This stops auto postback, so SelectedIndexChanged does not fire.
e.preventDefault();
});
$("#idofselectelement").keyup(function(e) {
//Check for enter keypress
if ((e.keyCode ? e.keyCode : e.which) == 13){
//Simulate autopostback, this triggers SelectedIndexChanged
__doPostBack('idofselectelement','') });
}
在我看来,有时更容易把这个功能在js或jQuery代码,因为你可以直接操作的行为控制,你不限于Asp的功能。。NET给你。不知道其他人是怎么想的??
编辑:没有测试,但我认为事件1是鼠标右键....$("#idofselectelement").mousedown(function(event) {
if(event.which == 1) {
//Simulate autopostback, this triggers SelectedIndexChanged
__doPostBack('idofselectelement','')
}
});
看看关键钩子,尝试这样做,这将是你的答案。
http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook