jQuery没有在输入框中检测到“left”按键

时间:2011-08-30 21:34:46

标签: jquery

我的代码是

$('input').live('keypress', function(event) {
   if (event.keyCode === 37) console.log("left key pressed");
    else console.log("some other key press");
});

请参阅http://jsfiddle.net/4RKeV/

这会检测按键,但不会检测左按键(keyCode 37)。如何检测左键按压?

2 个答案:

答案 0 :(得分:3)

简而言之:请勿使用keypress事件。请改用keydownkeyup

任何官方规范都不涵盖keypress事件。因此,keypress没有明确定义的行为,不会在浏览器中以相同的方式工作,并且会以反复无常的方式行事。 (Read more [quirksmode.org]

作为keypress的替代方案,您应该使用以下其中一项:

我可能会使用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");
});