jQuery的'keypress'不适用于Chrome中的某些键.如何解决?

Dav*_*Dev 62 jquery google-chrome keypress

我正在尝试实现按键功能,这将在用户点击时删除div Esc.这适用于Firefox和IE,代码如下:

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

如果我按任意键,alert则会显示第一个键,如果我按Escape 键,则会显示第二个键alert.

但这不适用于Chrome.alert如果我按下任何一个字母键,则会始终显示第一个,但是当我点击Escape,Tab,Space或任何数字时,则不会显示第一个.

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

SLa*_*aks 115

请尝试处理keydown.

  • 这个答案的诀窍,我认为非常重要的是,"尝试处理`keydown`"不是通用解决方案,而是特定于"某些键".你仍然需要`keypress`来正确处理ascii字符.所以这真的是一个(混乱的)多步骤过程. (18认同)
  • @MaxStrater:`keypress`仅适用于实际角色. (3认同)

bea*_*ear 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();
    }
}); 
Run Code Online (Sandbox Code Playgroud)