jQuery的“按键”不适用于Chrome中的某些按键。 如何解决?

我试图实现按键function,当用户点击Esc时将删除一个div。 这适用于Firefox和IE使用以下代码:

 $("body").keypress(function(e) { alert("any key pressed"); if (e.keyCode == 27) { alert("escape pressed"); } }); 

如果我按任何键,将显示第一个alert ,如果我点击了Escape,也会显示第二个alert

尽pipe这不适用于Chrome。 第一个alert总是显示,如果我打任何字母键,但不是当我按Escape,Tab,Space或任何数字。

为什么会这样? 有没有什么办法让Chrome来响应这些按键?

尝试处理keydown

使用keydown 。 键盘不能在Chrome中使用ESC(不知道其他浏览器)。

 $(newTag).keydown(function(e) { //keypress did not work with ESC; if (event.which == '13') { ProfilePage.saveNewTag(search_id, $(newTag).val()); } else if (window.event.which){ $(newTag).remove(); } }); 

对于ESC键:

 $(document).keydown(function(e) { if(e.keyCode == 27) { /* Run code */ } } 

对于字母键,如“L”:

 $(document).keypress(function(e) { if(e.which == 108) { } }); 

适用于Chrome和Firefox

在第二次警报添加之后

 e.preventDefault(); 

这将阻止事件的默认操作被触发。

有关此方法的更多信息

你的代码应该看起来像

 $("body").keypress(function(e) { alert("any key pressed"); if (e.keyCode == 27) { alert("escape pressed"); e.preventDefault(); }}); 

使用jquery.hotkey js文件,您可以使Sortcut键

 $(document).bind('keydown', 'esc', function(){ });