2011-06-29 11 views
3

シフトキーを離したときに関数を実行できるようにしたい。シフトが解除されたかどうかを検出する方法は?

私はシフトキーのようなものを用いて検出することができる知っている:

$(window).bind("keydown keyup", function(ev) { ... }); 

それはキーの組み合わせ(例えばshift+a)を検出するために非常に適しています。問題は、シフトキー自体を検出したい場合、​​をev.shiftKey=false,ev.which=16keyupev.shiftKey=true,ev.which=16に設定することです。 keyupにこのコンビネーションのイベントを添付しようとしましたが、両方のシフトキーを押したときに非常に微妙な方法で失敗します。最初のシフトキーが離されます。

これを行うには何かクリーンな方法はありますか?または、私はちょうど2つのシフトキーの場合を無視する必要がありますか?

+2

ええ、それを処理する明らかな方法は、シフトがダウンすると変数をインクリメントし、シフトが発生するとそれを減らすことです。その変数がゼロでない限り、シフトが押されたとみなすことができます。それは、実装が非常に難しい解決策ではありませんが、誰かが両方を押す理由はありません。 – brymck

答えて

1

誰かが意図的にアプリケーションを中断しようとしている場合を除き、両方のSHIFTキーを同時に押す人はいないでしょう。このケースでは、99%のユーザーが両方のキーを押さないようにする(read廃棄時間)コーディングエッジケースを設計することはできません。

キーの押下を決定するロジックは妥当です。変数を設定し、プレスに基づいてインクリメント/デクリメントし、0に等しい場合、何も押されていません。 Presto bammo。

編集:またはちょうどブライアンが彼のコメントで言ったことをしてください! :)

関連する問題