Ответ 1
Попробуйте вместо этого использовать keydown
.
Я пытаюсь реализовать функцию нажатия клавиш, которая удаляет 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 реагировать на эти нажатия клавиш?
Попробуйте вместо этого использовать keydown
.
используйте 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();
}
});
Для клавиши 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();
}});
Используя Jquery.hotkey js файл, вы можете сделать кнопку "Сортировка"
$(document).bind('keydown', 'esc', function(){ });