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(){ });