我试图在 jQuery 中捕捉按下箭头键的动作,但没有触发任何事件。
$(function(){
$('html').keypress(function(e){
console.log(e);
});
});
这会生成字母数字键事件,但删除键、方向键等不会生成任何事件。
是我做错了什么,导致没有捕捉到这些事件?
下面是一个示例:[JSnippet演示按键()与按键()][1]
您应该使用 .keydown()
,因为 .keypress()
会忽略"Arrows",要捕捉按键类型,请使用 e.which
按下结果屏幕,使其成为焦点(在 fiddle 屏幕的右下方),然后按箭头键查看其工作情况。
注:
.keypress()
不会触发 Shift、Esc 和 Delete,但.keydown()
会。
2.实际上,某些浏览器中的 .keypress()
会被方向键触发,但这并不跨浏览器,因此使用 .keydown()
更可靠。更多有用信息
3.你可以使用事件对象的.which
或.keyCode
--有些浏览器不支持其中一个,但在使用jQuery时,使用这两个都是安全的,因为jQuery是标准化的。(我更喜欢.which
,从来没有一个问题)。
4.要使用实际捕获的按键来检测 ctrl | alt | shift | META
按键,你应该检查事件对象的以下属性 - 如果它们被按下,它们将被设置为 "true":
event.ctrlKey
- ctrl
event.altKey
- alt
event.shiftKey
- shift
event.metaKey
- META ( 命令 ⌘ 或 Windows 键 )
5.最后,这里有一些有用的按键代码(完整列表 - keycode-cheatsheet ):
回车 13
上: 38
向下: 40
右: 39
左: 37
Esc: 27
空格键: 32
Ctrl: 17
Alt: 18
Shift: 16
$(document).keydown(function(e) {
console.log(e.keyCode);
});
按键事件确实可以检测到方向键,但并非所有浏览器都能做到。 因此,最好使用 keydown。
控制台日志中应显示这些按键代码: