jQuery的keypress()事件不发射?
我正尝试用jQuery向右和向左箭头键按下事件。 使用下面的代码,我可以触发任何字母数字键上的事件,但光标键(上,下,左,右)不会触发。 我正在开发该网站主要是为了IE用户,因为它是一个业务线应用程序。 我在这里做错了什么?
$('document').keypress(function(e){ switch (e.which) { case 40: alert('down'); break; case 38: alert('up'); break; case 37: alert('left'); break; case 39: alert('right'); break; default: alert('???'); } });
电子邮件不工作在IE尝试e.keyCode ,如果你的目标是IE浏览器,你也可能想使用keydown()而不是keypress ()。
有关更多信息,请参阅http://unixpapa.com/js/key.html 。
有了jQuery,我已经这样做了:
function checkKey(e){ switch (e.keyCode) { case 40: alert('down'); break; case 38: alert('up'); break; case 37: alert('left'); break; case 39: alert('right'); break; default: alert('???'); } } if ($.browser.mozilla) { $(document).keypress (checkKey); } else { $(document).keydown (checkKey); }
另外,尝试这些插件,看起来像他们所做的一切为你工作:
http://www.openjs.com/scripts/events/keyboard_shortcuts
http://www.webappers.com/2008/07/31/bind-a-hot-key-combination-with-jquery-hotkeys/
你有一个string中的文档。 更改:
$('document').keypress(function(e){
至
$(document).keypress(function(e){
当然这是一个封闭的问题,我想补充一些你的讨论
在Mozilla中,我观察到这个代码有一个奇怪的行为
$(document).keydown(function(){ //my code });
代码被触发两次。 当debugging时,我发现实际上有两个事件被触发:'keypress'和'keydown'。 我禁用了一个事件,代码显示了我预期的行为。
$(document).unbind('keypress'); $(document).keydown(function(){ //my code });
这适用于所有浏览器,也不需要检查浏览器特定的(如果($。browser.mozilla){})。
希望这可能对某人有用
你的原始代码有$('document')…当它有$(文档)没有引号。