0

自分のキーイベントハンドラーを、すでに別のイベントハンドラーがアタッチされているINPUTにアタッチしたいと思いonkeydownます。基本的に、他のすべてのハンドラーの前にキーイベントを受信し、ユーザーが特定のキーを押したかどうかを確認します。はいの場合は、いくつかの関数を実行してイベントを破棄します。いいえの場合は、イベントをに渡します。他のハンドラー。

jQueryでこれを行うにはどうすればよいですか?

4

2 に答える 2

3

サードパーティのスクリプトまたはjQueryアドオンをロードする場合は、最初にスクリプトまたは関数をロードするだけです。そうすれば、イベントハンドラーのバインドを解除したり、再バインドしたりする手間をかけずに、このようなものを使用できます。

// your possible interceptor code
$("#awesome").keydown(function(e) {
  if (e.keyCode < 70) {
    e.stopImmediatePropagation();
    console.log("BLOCKED!!!");
  };
});

// possible 3rd party event code loaded after your code
$("#awesome").keydown(function(e) {
  console.log("3rd party:"+e.keyCode);
});

ウェブページの例=> http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-key-event-interception.html

Firebugコンソールの出力例 代替テキスト

jQuery stopImmediatePropagation()ドキュメント

于 2010-12-01T17:00:44.630 に答える
2

jQuery bind()ドキュメントによると:

「イベントが要素に到達すると、その要素のそのイベントタイプにバインドされたすべてのハンドラーが起動されます。複数のハンドラーが登録されている場合、それらは常にバインドされた順序で実行されます。」

したがって、他のハンドラーのバインドを解除し、バインドしてから、最初に実行する場合は他のハンドラーを追加し直す必要があるようです。

このスレッドには、それに関していくつかの良い情報があります 。jQuery:イベントハンドラーのバインドを解除して、後で再度バインドします。

于 2010-12-01T16:50:57.580 に答える