«Нажатие клавиш» в jQuery не работает для некоторых клавиш в Chrome. Как обойти? - PullRequest
62 голосов
/ 10 октября 2010

Я пытаюсь реализовать функцию нажатия клавиш, которая удалит 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, Space или любое из чисел.

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

Ответы [ 6 ]

115 голосов
/ 10 октября 2010

Попробуйте обработать keydown.

19 голосов
/ 30 марта 2011

используйте 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();
    }
}); 
2 голосов
/ 04 февраля 2013

Для клавиши ESC:

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

Для буквенных клавиш, например, 'L':

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

Работает как в Chrome, так и в Firefox

1 голос
/ 04 февраля 2018

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

e.which: 0
e.keyCode: 27

keyup 'ESC'

e.which: 27
e.keyCode: 27

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

1 голос
/ 06 ноября 2012

После второго предупреждения добавьте также

e.preventDefault();

Это предотвратит запуск действия по умолчанию для события.

Подробнее об этом методе здесь

Ваш код должен выглядеть как

$("body").keypress(function(e) {
    alert("any key pressed");
    if (e.keyCode == 27) {
         alert("escape pressed");
         e.preventDefault();
}});
0 голосов
/ 20 декабря 2016

Используя JS-файл Jquery.hotkey, вы можете сделать клавишу Sortcut

$(document).bind('keydown', 'esc', function(){ });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...