0

I have a dropdownlist on a page like this;

<asp:DropDownList ID="ddlCities" runat="server" 
AutoPostBack="true" ClientIDMode="Static" 
OnSelectedIndexChanged="ddlCities_SelectedIndexChanged"> 
</asp:DropDownList>

This works great in normal conditions. But I have to change behaviour of dropdownlist due to client's actions.

So I mean, when client focused dropdownlist and moved down to other list items, SelectedIndexChanged event is triggered. But I don't want this. I want, when user focused an element of dropdownlist, SelectedIndexChanged event will not be triggered, and pressing enter or left mouse down events will trigger SelectedIndexChanged event only.

Is there any way to achieve this?

4

2 回答 2

1

如果你有 jQuery,我认为你可以做这个客户端。Asp.NET Dropdownlist 呈现为 HTML 选择元素。

尚未对此进行测试,但我认为您可以阻止更改事件中的回发,并在输入键按下时触发它...

$("#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','')                      
    }
});
于 2013-04-26T08:49:46.353 回答
0

看看关键的钩子来尝试这样做,这将是你的答案。

http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook

于 2013-04-26T08:27:27.590 回答