35

私はjQueryを使用しているので、それを介したソリューションも機能します。理想的には、両方を知りたいのですが。

ページ上の別の関数にバインドされた矢印キーを既に持っていますが (jQuery を使用)、それに加えてページをスクロールさせると問題が発生します。

一時は知っていたかもしれませんが、もう覚えていません。

4

3 に答える 3

82

ドキュメント レベルの keypress ハンドラを追加するとうまくいきます。

var ar=new Array(33,34,35,36,37,38,39,40);

$(document).keydown(function(e) {
     var key = e.which;
      //console.log(key);
      //if(key==35 || key == 36 || key == 37 || key == 39)
      if($.inArray(key,ar) > -1) {
          e.preventDefault();
          return false;
      }
      return true;
});
于 2009-06-29T05:00:25.650 に答える
2

状況によっては、たとえば。注目している要素が実際になく、クリックする必要のある領域がある場合、ハンドラーをあまり制御できず、グローバルレベルでイベントを防止することはせいぜい少し不安定になる可能性があります (私が見つけたように)難しい方法で)。

このような場合の最も簡単な解決策は、コントロール ボタンのクリック時にバインドし、左に -9000px 配置した空の入力要素にフォーカスすることです。

その後、キーダウンを介してイベントを確実にブロックできます。また、入力要素のデフォルトの動作はカーソルを左右に移動するだけなので、デフォルトの動作や他のグローバル リスナーのブロックについて心配する必要はありません。

于 2014-09-11T11:15:18.750 に答える