[CTRL]キーが押されたかどうかに応じてselect要素のchangeイベントを処理したいが、作業。HTML選択要素のonChange()ハンドラのCTRLキー状態を検出する方法
ここで私が持っているものだ:ASP.NET WebフォームListBoxコントロール(それはそう(少し簡略化などのオプションを使用して、select要素にレンダリング):
<select name="ctl00$ContentPlaceHolder1$MultiselectDropDownStatus" id="ctl00_ContentPlaceHolder1_MultiselectDropDownStatus" size="7" multiple="multiple">
<option selected="selected" value="">All</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
今、ユーザーが1つのオプションを選択したときに、私はCTRLキーの状態に応じて何かをしたい、私はそうのような変更イベントを処理します:スクリプトメソッド内
script.AppendLine(@" $(""#" + ClientID + @""").change(function (e) {");
//....
を私はキーの状態を確認したい
script.AppendLine(@" if (e.ctrlKey) {");
script.AppendLine(@" alert(""ctr key was pressed during the click"")");
script.AppendLine(@" }");
//...
ただし、このように、e.crtlKey
は、常にundefined
です。
しかし、私は直接(ない変更イベントを経由して)ListBoxコントロールのクリックイベントを処理する際、そのよう:ここ
script.AppendLine(@" $(""#" + ClientID + @""").click(function (e) {");
script.AppendLine(@" if (e.ctrlKey) {");
script.AppendLine(@" alert(""ctr key was pressed during the click"")");
script.AppendLine(@" }");
、e.crtlKey
は私に正しい値を与えます。
なぜ変更ハンドラでCTRL-Key状態を正しく取得できないのですか?
私は今IE 11で作業していますが、他の主要なブラウザでも動作するはずです。
更新:元々、CTRLキーの状態を使用して複数の選択肢があるというイベントを処理したかったのです。私はこれが間違っていたことに気づいたので、選択したオプションを明示的に数えることでこれを解決しました。しかし、この質問は有効なので、私はここに残します:変更されたハンドラのキー状態を検出する方法?