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
是不够的。我们已经将所有代码库转换为checkevent.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
不同。