jQuery で矢印キーの押下をキャプチャしようとしていますが、イベントがトリガーされていません。
$(function(){
$('html').keypress(function(e){
console.log(e);
});
});
これは英数字キーのイベントを生成しますが、削除、矢印キーなどはイベントを生成しません。
それらをキャプチャしないために何が間違っていますか?
jQuery で矢印キーの押下をキャプチャしようとしていますが、イベントがトリガーされていません。
$(function(){
$('html').keypress(function(e){
console.log(e);
});
});
これは英数字キーのイベントを生成しますが、削除、矢印キーなどはイベントを生成しません。
それらをキャプチャしないために何が間違っていますか?
キータイプの使用をキャッチするために、「矢印」を無視する.keydown()
ため、使用する必要があります.keypress()
e.which
結果画面を押してフォーカスし (フィドル画面の右下)、矢印キーを押して動作を確認します。
ノート:
.keypress()
Shift、Esc、および Delete で起動されることはありませんが、発生します.keydown()
。.keypress()
には一部のブラウザーでは矢印キーでトリガーされますが、クロスブラウザーではないため、より信頼性が高く使用できます.keydown()
。より役立つ情報
.which
イベント オブジェクトのOrを使用でき.keyCode
ます - 一部のブラウザーはいずれかをサポートしませんが、jQuery を使用する場合は、jQuery が物事を標準化するため、両方を安全に使用できます。(私は問題がなかったことが好き.which
です)。ctrl | alt | shift | META
には、イベント オブジェクトの次のプロパティを確認する必要があります。それらが押下された場合は TRUE に設定されます。
event.ctrlKey
- コントロールevent.altKey
- 代替event.shiftKey
- シフトevent.metaKey
- META (コマンド ⌘ または Windows キー)最後に、いくつかの便利なキー コードを示します (完全なリストについては、keycode-cheatsheet )。
$(document).keydown(function(e) {
console.log(e.keyCode);
});
Keypress イベントは矢印キーを検出しますが、すべてのブラウザーで検出されるわけではありません。したがって、キーダウンを使用することをお勧めします。
これらは、コンソール ログで取得する必要があるキーコードです。
矢印キーが押されているかどうかは、次の方法で確認できます。
$(document).keydown(function(e){
if (e.keyCode > 36 && e.keyCode < 41)
alert( "arrowkey pressed" );
});
JQueryからのリンクを参照してください
http://api.jquery.com/keypress/
それは言う
keypress イベントは、ブラウザーがキーボード入力を登録するときに要素に送信されます。これは keydown イベントに似ていますが、Shift、Esc、delete などの修飾キーと非印刷キーは keydown イベントをトリガーしますが、keypress イベントはトリガーしません。プラットフォームとブラウザーによっては、2 つのイベント間のその他の違いが生じる場合があります。
つまり、矢印の場合はキープレスを使用できません。