javascript - 按键 shift 加任意数字

标签 javascript jquery keypress

根据this数字1的代码值为49,但下面的代码无法正常运行。在控制台中,当用户按下数字 1 时,可以看到:

"keyCode": 49,
"key": "1",
"charCode": 49,
"char": undefined,
"which": 49,

意味着1的代码确实是49,但如果与shift结合使用,它不会在控制台中显示任何内容。

另一方面按下 shift + 1 时会给出:

"key": "!",
"code": "Digit1",
"location": 0,
"ctrlKey": false,
"shiftKey": true,
"altKey": false,
"metaKey": false,
"repeat": false,
"isComposing": false,
"charCode": 33,
"keyCode": 33,
"which": 33,

What is the correct way to detect keypress of shift + any number?

$(document).on('keypress', function(event) {
  //console.log(event);
  if (event.which === 49 && event.shiftKey) {
    console.log("pressed shift + 1")
  }
  if( event.which === 65 && event.shiftKey ) {
        alert('you pressed SHIFT+A');
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

最佳答案

我需要做同样的事情。但使用 keydown 还不够。我们已经将所有代码库转换为检查 event.key,因为这是推荐使用的属性。 (whichkeyCodecharCode 均已弃用。)

但在一个地方,我们必须能够检测 Shift + 1,因此我使用了:

var expectedKey '1'; // or w, or W, etc.
if (event.shiftKey) {
    if (event.key == expectedKey || event.code == 'Digit' + expectedKey) {

event.code 提供按下的物理键,而不是键盘布局将其解释为的字符。

https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code

https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key

关于javascript - 按键 shift 加任意数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45271870/

相关文章:

javascript - Jquery 将键绑定(bind)到除类之外的正文

c++ - 使用键盘输入暂停 C++ GLUT 程序

javascript - 如何使用node和express将javascript函数打印到pug文件

javascript - 如何检测移动设备并获取用户代理信息,仅发送一次并将该信息保存到服务器上的数据库?

javascript - Materialise 可折叠 Accordion 不工作 IOS 13

javascript - 单击链接时防止网页滚动到顶部

jquery - 为大文件上传设置 upload_max_filesize (等)

JQuery:检测输入字段的变化

javascript - 如果 div id 有 $,Jquery 不工作

javascript - 什么是\r"以及为什么要将它与\n 一起使用?