0

このようなページにドロップダウンリストがあります。

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

これは、通常の状態ではうまく機能します。しかし、クライアントのアクションにより、ドロップダウンリストの動作を変更する必要があります。

つまり、クライアントがドロップダウンリストにフォーカスし、他のリスト項目に移動すると、SelectedIndexChangedイベントがトリガーされます。しかし、私はこれを望んでいません。ユーザーがドロップダウンリストの要素にフォーカスした場合、SelectedIndexChangedイベントはトリガーされず、Enter キーまたはマウスの左ボタンを押すとイベントのみがトリガーされますSelectedIndexChanged

これを達成する方法はありますか?

4

2 に答える 2

1

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','')    });

     }

私の意見では、コントロールの動作を直接操作でき、Asp.NET が提供する機能に制限されないため、この機能を js または jQuery コードに配置する方がはるかに簡単な場合があります。他の人がこれについてどう思うかわかりませんか??

編集:テストされていませんが、イベント1はマウスの右クリック用だと思います....

$("#idofselectelement").mousedown(function(event) {
   if(event.which == 1) {
       //Simulate autopostback, this triggers SelectedIndexChanged
        __doPostBack('idofselectelement','')                      
    }
});
于 2013-04-26T08:49:46.353 に答える