Подтвердить что ты не робот

JQuery 'keypress' не работает для некоторых ключей в 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, Space или любое из чисел.

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

4b9b3361

Ответ 1

Попробуйте вместо этого использовать keydown.

Ответ 2

используйте keydown. keypress не работает с 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();
    }
}); 

Ответ 3

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

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

Для буквенных клавиш, таких как "L":

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

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

Ответ 4

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

e.preventDefault();

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

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

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

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

Ответ 5

Используя Jquery.hotkey js файл, вы можете сделать кнопку "Сортировка"

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