数字小键盘的 keyCode 值?

IT技术 javascript jquery web-applications numeric-keypad
2021-02-03 00:14:28

数字小键盘上的数字与键盘顶部的数字是否具有不同的键码?

这是一些应该在 keyup 事件上运行的 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 值,但我如何找出它们是什么?

6个回答

键码不一样。键盘 0-9 是 Keycode 96to105

你的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 提供的链接。

您应该在 keyDown 事件中使用 KeyValue 而不是 keyCode
2021-03-15 00:14:28
需要注意的是,这在 jQuery 的 .keypress() 事件中有所不同,它报告 48-57 的数字,无论它们来自键盘还是小键盘。
2021-03-18 00:14:28
e.keyCode已弃用。e.key简化了很多。此外,您可以通过单击此处的实际键来查看它们,而不是使用静态图表来查找您需要的键代码/标识符:keyjs.dev
2021-04-04 00:14:28
1+ 这里还有关键代码blogs.longwin.com.tw/lifetype/key_codes.html 和演示测试在这里speedysense.com/javascript-keyboard-event按键事件。
2021-04-05 00:14:28
所有键码的参考(带演示):codeforeach.com/javascript/...
2021-04-11 00:14:28

*******************不要使用 KEYCODE !!!! ******************

keyCode的问题是为了避免键盘顶部的数字组合键,我们必须在“Shift”“Alt”键上添加检查以避免特殊字符,例如e @ & " { } ...

最简单的解决方案是将e.key转换为数字并检查转换是否给出NaN

let key = Number(e.key)
if (isNaN(key) || e.key === null || e.key === ' ') {
  console.log("is not numeric")
}
else {
  console.log("is numeric")
}

如果 e.key 为null空格请小心,它给出0

Number(5)         // => 5
Number('5')       // => 5
Number(null)      // => 0 
Number(' ')       // => 0
Number('chars')   // => NaN
Number(undefined) // => NaN
我们可以使用 parseInt 除了 Number 然后当它是空格或空时它会产生 NaN 。
2021-03-20 00:14:28
干得好@AlmasDusal。测试也可以变成 if ( parseInt(e.key) >= 0 ) ...
2021-03-30 00:14:28
我们可能会注意键盘语言布局的另一件事。某些键盘布局将默认数字键更改为符号。
2021-04-14 00:14:28

你可以简单地运行

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

在浏览器控制台中查看按键代码。

或者你可以在这里找到关键代码:https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Numpad_keys

如果您使用的是没有数字小键盘的键盘,则此答案可能没有用
2021-03-24 00:14:28

数字小键盘上的数字和键盘顶部的数字的 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

对于需要 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;
    }

它使用第一个答案的逻辑。