我的代码是
$('input').live('keypress', function(event) {
if (event.keyCode === 37) console.log("left key pressed");
else console.log("some other key press");
});
这会检测按键,但不会检测左按键(keyCode 37)。如何检测左键按压?
答案 0 :(得分:3)
简而言之:请勿使用keypress
事件。请改用keydown
或keyup
。
任何官方规范都不涵盖keypress
事件。因此,keypress
没有明确定义的行为,不会在浏览器中以相同的方式工作,并且会以反复无常的方式行事。 (Read more [quirksmode.org])
作为keypress
的替代方案,您应该使用以下其中一项:
keydown
[w3c spec] - 当按下某个键时会触发,并在按住该键时继续触发。keyup
[w3c spec] - 当钥匙被抬起时触发。我可能会使用keydown
修复它,因为它可能更接近您期望keypress
做的事情:
$('input').live('keydown', function(e) {
if (e.which === 37) { console.log("left key pressed"); }
else { console.log("some other key press"); }
});
P.S。我将e.keyCode
更改为e.which
,因为它更符合跨浏览器标准。
答案 1 :(得分:3)
将绑定事件更改为keyup
:
$('input').live('keyup', function(event) {
if (event.keyCode === 37) console.log("left key pressed");
else console.log("some other key press");
});