"нажатие клавиши" 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 ответов:
использовать 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(); }});