событие нажатия клавиш не работает в IE и Chrome, но работает в FF - PullRequest
14 голосов
/ 10 июня 2011

Есть идеи, почему это может произойти?Обычно я думаю, что Chrome будет более щадящим с кодами?

$(document).keypress(function(e) {
    if(e.keyCode == 39) rightImage();
    if(e.keyCode == 37) leftImage();
});

Так выглядит моя клавиша.Я что-то пропустил?rightImage ();и leftImage ();есть функции, которые должны работать, потому что я использую эти функции где-то еще

Спасибо за помощь!

Ответы [ 3 ]

37 голосов
/ 10 июня 2011

Измените keypress на keydown:

$(document).keydown(function(e) {
    if(e.keyCode == 39) rightImage();
    if(e.keyCode == 37) leftImage();
});

Событие нажатия клавиши происходит при нажатии клавиши, за которым сразу же следует событие нажатия клавиши.Затем событие keyup генерируется при отпускании ключа.

Чтобы понять разницу между нажатием клавиши и нажатием клавиши, полезно понять разницу между «символом» и «ключом».«Клавиша» - это физическая кнопка на клавиатуре компьютера, а «символ» - это символ, набираемый нажатием кнопки.Теоретически, события нажатия клавиш и нажатия клавиш представляют собой нажатие или отпускание клавиш, в то время как событие нажатия клавиш представляет вводимый символ.Реализация теории не одинакова во всех браузерах.

2 голосов
/ 10 июня 2011

Нашел ответ здесь: http://api.jquery.com/keypress/

«Если вы хотите использовать стрелки, удалять клавиши возврата на клавиатуре в Chrome, вы должны использовать нажатие клавиши. Нажатие на клавиши работает только в Firefox и Opera.»

Ваш код не работал для меня в iE8 (работал в FF), поэтому я переключил нажатие на клавишу. Работает в IE сейчас. У меня нет Chrome для тестирования.

0 голосов
/ 07 января 2019

да, этого можно добиться, изменив событие onkeypress на onkeydown.Более того, эта проблема существует только в случае Internet Explorer, когда вы хотите вызвать событие при щелчке мышью.

...