根据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
,因为这是推荐使用的属性。 (which
、keyCode
和 charCode
均已弃用。)
但在一个地方,我们必须能够检测 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/