按键班次加上任何数字

时间:2017-07-24 02:44:23

标签: 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,
  

检测shift +任意数字的按键的正确方法是什么?

$(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>

1 个答案:

答案 0 :(得分:1)

我需要做同样的事情。但是,仅使用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