85

テンキーパッドの数字は、キーボードの上部の数字とは異なるキーコードを持っていますか?

キーアップ イベントで実行されるはずの JavaScript を次に示しますが、キーコードが 48 から 57 の間の場合のみです。コードは次のとおりです。

$('#rollNum').keyup(function(e) {
    if(e.keyCode >= 48 && e.keyCode <= 57) { //0-9 only
        var max = 15;
        var textLen = $(this).val().length;
        var textLeft = max - textLen;
        . . . 

私の問題は、このコードがキーボードの上部に入力された数字に応答してのみ実行され、テンキーパッドから入力された数字に応答して実行されないことです。

答えは、数字キーパッドの keyCode 値が異なるということだと思いますが、それらが何であるかを調べるにはどうすればよいですか?

4

12 に答える 12

176

キーコードが異なります。キーパッド 0 96~ 9 はキーコードです。105

あなたのif声明は次のとおりです。

if ((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105)) { 
  // 0-9 only
}

キーコードのリファレンス ガイドは次のとおりです。


- アップデート -

これは古い回答であり、keyCode廃止されました。を使用するなど、これを達成するための代替方法がありますkey

if ((e.key >= 48 && e.key <= 57) || (e.key >= 96 && e.key <= 105)) { 
  // 0-9 only
}

これは event.keyの出力テスターです。リンクの @Danziger に感謝します。

于 2012-11-02T14:17:06.400 に答える
8

あなたは単に実行することができます

$(document).keyup(function(e) {
    console.log(e.keyCode);
});

ブラウザコンソールで押されたキーのコードを表示します。

または、ここでキーコードを見つけることができます: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Numpad_keys

于 2012-11-02T14:23:32.397 に答える
6

keyCode は、テンキーの数字とキーボード上の数字で異なります。

キーコード:

キーボード上の数字(0 - 9): 48 - 57
テンキー上の数字 (0 - 9): 96 - 105

JavaScript 条件:

if((e.keyCode >= 48 && e.keyCode <=57) || (e.keyCode >= 96 && e.keyCode <=105)) { 
    // entered key is a number
}

すべてのキーコードのリファレンス (デモ付き) : http://www.codeforeach.com/javascript/keycode-for-each-key-and-usage-with-demo

于 2016-10-26T11:20:00.267 に答える
2

CTRL+C、CTRL-V ソリューションが必要な場合は、次のようにします。

    /**
     * Retrieves the number that was pressed on the keyboard.
     *
     * @param {Event} event The keypress event containing the keyCode.
     * @returns {number|null} a number between 0-9 that was pressed. Returns null if there was no numeric key pressed.
     */
    function getNumberFromKeyEvent(event) {
        if (event.keyCode >= 96 && event.keyCode <= 105) {
            return event.keyCode - 96;
        } else if (event.keyCode >= 48 && event.keyCode <= 57) {
            return event.keyCode - 48;
        }
        return null;
    }

最初の回答のロジックを使用します。

于 2018-04-09T12:49:04.210 に答える
2

はい、それらは異なりますが、多くの人が console.log を使用して自分で確認することを提案しています。ただし、 event.location を使用して、番号がキーパッドから来ているのかevent.location === 3、メインキーボード/一般キーの上部から来ているのかを判断できる人は誰もいませんでしたevent.location === 0。このアプローチは、キーストロークがキーボードの領域から来ているかどうかを一般的に判断する必要がある場合に最適でありevent.key、特定のキーには適している可能性があります。

于 2020-03-31T14:11:34.683 に答える
0

@A.Morelの答えを少しクリアしました。キーボード言語のレイアウトに注意するかもしれません。一部のキーボード レイアウトでは、デフォルトの数字キーが記号に変更されました。

let key = parseInt(e.key)
if (isNaN(key)) {
  console.log("is not numeric")
}
else {
  console.log("is numeric")
}
于 2020-12-16T04:40:58.340 に答える
-2

これを使用して、キーコードを簡単に把握できます。

$(document).keyup(function(e) {
    // Displays the keycode of the last pressed key in the body
    $(document.body).html(e.keyCode);
});

http://jsfiddle.net/vecvc4fr/

于 2014-09-11T14:51:05.190 に答える