"нажатие клавиши" jQuery не работает для некоторых клавиш в Chrome. Как это обойти?


Я пытаюсь реализовать функцию нажатия клавиш, которая удалит div, когда пользователь нажмет Esc. Это работает для Firefox & IE со следующим кодом:

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

если я нажму любую клавишу, первый alert отображается, и если я нажму Escape, второй alert также отображается.

Это не работает с Chrome, хотя. Первый alert всегда отображается, если я нажму любую из буквенных клавиш, но не тогда, когда я нажму Escape, Tab, пробел или любой из числа.

С чего бы это? Есть ли способ заставить Chrome реагировать на эти нажатия клавиш?

6 59

6 ответов:

то .

использовать keydown. нажатие клавиши не работает с ESC в Chrome (не уверен в других браузерах).

$(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.горячая клавиша js file вы можете сделать Sortcut key

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

нажмите клавишу 'ESC'

e.which: 0
e.keyCode: 27

клавиша 'ESC'

e.which: 27
e.keyCode: 27

для непечатаемых символов лучше использовать keyup.