2012-02-22 6 views
2

現在、のCtrlキーを押さなくても、複数の値を選択して選択解除できるように、マルチセレクト要素のデフォルトの動作を変更しようとしています。Ctrlキーを押してシミュレーションする

私は単純な解決策hereを見つけましたが、ie8で機能しません(つまり、onmousedowndoes not apply to option elements)。

しかし、私はマウスが複数選択の上に置いたときに1だけで、押されたコントロールキーをシミュレートすることができることを、考え出し:

$(document).ready(function() { 
    $('select').hover(function(e) { 
     var kde = jQuery.Event("keydown"); 
     kde.ctrlKey = true; //something like this 
     kde.keyCode = 17; //or this - i don't know 
     $(e.target).trigger(kde);   
    }); 
}); 

なぜこれが動作しませんか?

  • Ctrlのキーは直接リリースされますか?
  • コードに問題がありますか?
  • 私は何か完全に欠けていますか?

答えて

2

あなたは、ユーザーが自分のキーボード上キーを押している間は、あなたがシフトキーをシミュレートすることにより、資本Aを生成することはできません同じように、プログラムでキーボードのボタンを押すことで、このようなイベントをシミュレートすることはできません。また、の場合でも動作しません。cmdで、ctrlではなく複数の要素を選択してください。

残念ながら、このアプローチを削除して他のオプションを探す必要があります。

+0

私はそれが事実かもしれないと思った、誰かがそう言った[ここ](http://stackoverflow.com/questions/2267890/jquery-emulate-key-press-ctrl-and)。しかし、ブラウザ機能を呼び出さないので、まだ動作していると思っていました。答えが – Envyrus

0

おそらく、マルチ選択コントロールではなく、各アイテムのチェックボックスを追加する必要があります。

新しい機能が選択されているときにチェックを外す機能は、このデフォルト動作を防止する機能よりも簡単です。

+0

ありがとうございます。チェックボックスは、コントロールキーの問題を解決します。しかし、この特定の選択項目には非常に多くの値があるため、チェックボックスはユーザーにとっては実用的ではありません。とにかくありがとう – Envyrus

+0

非常に長いリストのチェックボックスを独自のスクロール可能なdivに入れて、効果的に独自のリストコントロールを作成できませんか? – tonycoupland

+0

それは可能ですが、私はそれがネイティブコントロールよりも優れているとは思わない(それは欠点です) – Envyrus

関連する問題