我正在尝试实现按键功能,当用户点击Esc
时会删除div。这适用于Firefox& IE使用以下代码:
$("body").keypress(function(e) {
alert("any key pressed");
if (e.keyCode == 27) {
alert("escape pressed");
}
});
如果我按任意键,则显示第一个alert
,如果我点击Escape,则还会显示第二个alert
。
但这不适用于Chrome。如果我点击任何字母键,则会始终显示第一个alert
,但是当我点击Escape,Tab,Space或任何数字时,则不会显示。{/ p>
为什么会这样?有没有办法让Chrome响应这些按键?
答案 0 :(得分:115)
请尝试处理keydown
。
答案 1 :(得分:19)
使用 keydown 。 keypress不适用于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();
}
});
答案 2 :(得分:2)
对于ESC键:
$(document).keydown(function(e) {
if(e.keyCode == 27) { /* Run code */ }
}
对于字母键,例如'L':
$(document).keypress(function(e) {
if(e.which == 108) { }
});
适用于Chrome和Firefox
答案 3 :(得分:1)
第二次警报后也添加
e.preventDefault();
这将阻止触发事件的默认操作。
有关此方法的更多信息here
您的代码应该是
$("body").keypress(function(e) {
alert("any key pressed");
if (e.keyCode == 27) {
alert("escape pressed");
e.preventDefault();
}});
答案 4 :(得分:1)
按键'ESC'
e.which: 0
e.keyCode: 27
keyup'ESC'
e.which: 27
e.keyCode: 27
对于不可打印的字符,最好使用keyup
。
答案 5 :(得分:0)
使用Jquery.hotkey js文件,您可以生成Sortcut键
$(document).bind('keydown', 'esc', function(){ });