4

どのようなフィールドにもフォーカスせずにキーが押されたかどうかを確認しようとしています。

目標は、ユーザーが左右の矢印を押して次の画像に移動できるようにすることです。テキスト フィールドなどをクリックする必要はありません。これらのキーを押すだけで、次または最後の画像にスクロールできます。

お気に入り:

function keyEvent(e) {
  if(e.keyCode == 39) {
    run some code to get next image
  }
  else if (e.keyCode == 37) {
    run some code to get last image
  }
 }

フィールドなどにバインドする必要があるかのように、jquery には常に「セレクター」が必要なようです。

$('input[type=text]').on('keyup', function(e) {     
  if (e.which == 39) {

  run some code
} }); 

何か案は?

編集:

viewimage.php ファイル本体にこのスクリプトがあります...ページの読み込み時に JavaScript がまだ実行されていません。

<script type="text/javascript">
$(document).ready(function() { 
    $(document).keydown(function (e) {
     if (e.which == 39) {
       alert("39");
    }
    });
});
</script>

ありがとうございました

4

6 に答える 6

6
$(document).ready(function() {
    $(document).keydown(function(e) {   
      e.preventDefault();  
      if (e.which == 13) {
          // Whatever...
      }
    });
}); 
于 2012-10-10T20:46:12.143 に答える
5

どのようなフィールドにもフォーカスせずにキーが押されたかどうかを確認しようとしています。

input/textarea/select 要素を意味する場合fieldは、ハンドラーをドキュメントにアタッチし、イベント ターゲットが入力要素の場合は前述のハンドラーをキャンセルするだけです。

$(document).on('keyup', function(e) {
    if ($(e.target).is('input, textarea, select')) return;
    if (e.which == 39) {
        console.log('move foward');
    }
});

フィドル

于 2012-10-10T20:54:52.027 に答える
3

キーアップ (またはプレスまたはダウン) を本文、ドキュメント、またはウィンドウにバインドします。それらのいずれかまたはすべて (ベルト + サスペンダー) を使用します。

$('body',document,window).on('keyup', function(e) {
    if (e.which == 13) {
        e.preventDefault();
        console.log('enter');
    }
});​
于 2012-10-10T20:45:44.413 に答える
2

まず、キープレスの方が安全だと思います。一部のブラウザでキーアップとキーダウンが見逃されると聞きました。

私はそれを逆にしました...キーダウンが最も安全です。

あなたの質問への答えは、ドキュメントをバインドすることです:

$(document).on('keydown', function(){
  ...
});
于 2012-10-10T20:52:06.850 に答える
2

ドキュメントにリスナーを追加します。

$(document).on("keyup", function (e) {
    console.log(e.keyCode);
});​
于 2012-10-10T20:43:38.753 に答える
2

$(document).on()または_$(window).on()

于 2012-10-10T20:44:26.880 に答える