jQueryによる「削除」キープレスのキャプチャ


118

jQueryドキュメントのサンプルコードをkeypressイベントハンドラーに使用すると、Deleteキーをキャプチャできません。以下のスニペットは、FireFoxでキーが押された0ときにログに記録しますDelete

$(document).keypress(function(e) {
    console.log(e.which);       
});

Deleteキーを取得する方法があるはずだと思われますが、あいまいな用語であるため、Googleは多くの助けにはなりません。

回答:


202

イベントは実際の(印刷可能な)文字を対象としているため、イベントではkeypressなくkeyupor keydownイベントを使用する必要がありますkeypresskeydownはより低いレベルで処理されるためdelete、およびのようなすべての非印刷キーをキャプチャしますenter


keyupより良い仕事をするでしょう。
localhoost 2017年

2
@atilkanいいえ、ユーザーはでのフィードバックを期待してkeydownkeyupます。すべてのテキストエディターは、キーが離されたときではなく、キーが押されたときにアクションを実行します。
Philippe Leybaert、2017年

1
@PhilippeLeybaert私の場合、プログラムは最後に押された文字をキャッチできません。
localhoost 2017年

82
$('html').keyup(function(e){
    if(e.keyCode == 46) {
        alert('Delete key released');
    }
});

出典:java.charchar コードキーコード www.cambiaresearch.com


18
それはあるはずですalert('Delete Key Released')
Waldheinz 2013

誰かがキーアップの代わりにキープレスを使用している場合、Todが提案したように、keycode == 46イベントが発生します。キー(ドット)。しかし、それはkeyUpでうまく機能します。ありがとう
Mubashar 14

34

JavaScriptキーコード

  • e.keyCode == 8backspace
  • e.keyCode == 46 forward backspaceまたはdeletePCのボタン

この詳細を除いて、コリンとトッドの答えは機能しています。


4
e.KeyCodeではなくe.keyCode である必要があります
Jerome

16

event.key === "削除"

より新しく、よりクリーン:を使用しますevent.key。これ以上の任意の番号コードはありません!

注:古いプロパティ(.keyCodeおよび.which)は非推奨です。

document.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Delete") {
        // Do things
    }
});

Mozillaドキュメント

サポートされているブラウザ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.