'нажатие клавиши' jQuery не работает на некоторые ключи в Chrome. Как работать вокруг?

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

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

Если я нажал какую-либо клавишу, первое alert отображен, и если я поразил Escape, второе alert также отображен.

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

Почему это было бы? Там какой-либо путь состоит в том, чтобы заставить Chrome отвечать на эти нажатия клавиш?

62
задан 16 April 2014 в 03:33

4 ответа

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

e.which: 0
e.keyCode: 27

keyup 'ESC'

e.which: 27
e.keyCode: 27
<час>

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

1
ответ дан 31 October 2019 в 13:39

Используя файл Jquery.hotkey js можно Сделать ключ Sortcut

$(document).bind('keydown', 'esc', function(){ });
0
ответ дан 31 October 2019 в 13:39

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

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

Для ключей буквы, как 'L':

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

Работы и в Chrome и в Firefox

2
ответ дан 31 October 2019 в 13:39

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

e.preventDefault();

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

[еще 115] информация об этом методе здесь

Ваш код должен быть похожим

$("body").keypress(function(e) {
    alert("any key pressed");
    if (e.keyCode == 27) {
         alert("escape pressed");
         e.preventDefault();
}});
1
ответ дан 31 October 2019 в 13:39

Другие вопросы по тегам:

Похожие вопросы: