Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按shift键加上任意数字_Javascript_Jquery_Keypress - Fatal编程技术网

Javascript 按shift键加上任意数字

Javascript 按shift键加上任意数字,javascript,jquery,keypress,Javascript,Jquery,Keypress,根据编号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, "s

根据编号
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+任意数字按键的正确方法是什么

$(文档).on('keypress',函数(事件){
//console.log(事件);
if(event.which==49&&event.shiftKey){
控制台日志(“按下shift+1”)
}
if(event.which==65&&event.shiftKey){
警报(“您按下SHIFT+A”);
}
});

我需要做同样的事情。不过,使用
keydown
是不够的。我们已经将所有代码库转换为check
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
提供按下的物理键,而不是键盘布局解释为的字符


按键事件将shift+1视为感叹号,因此
which==33
。如果要测试1/!按键被按下,请尝试使用
keydown
keydup
事件。@nnnnnn这是为什么?在按键和向下键之间使用哪个更好?另外,当我尝试
shift+a
时,如果(event.which==65&&event.shiftKey){
有效,为什么字母不受代码变化的影响。不幸的是,我认为shift+number更适合我的项目,因为我需要这些短字符来指向页面。使用
keypress
,字母会受到影响。如果按“a”无移位键,您将获得
97
中的
(即小写“a”)“
keypress
事件更多的是关注字符而不是键。如果你说的是快捷键,那么
keypdown
可能比
keypup
更好-由你决定。@nnnnnn我用If-else更新了演示,它对字母a有效。使用
code 65作为列表的链接。因为ress事件的焦点是生成的字符。“1”和“!”以及“a”和“a”显然都是不同的字符。如果您的焦点是实际的键,那么请使用keydown事件。感谢您!我从未意识到
event.code
存在,并且与
event.keyCode
不同。