Захват "Удалить" Keypress с помощью jQuery
При использовании кода примера из документации jQuery для обработчика событий keypress я не могу захватить ключ Delete. Ниже приведен фрагмент ниже log 0
, когда клавиша Delete нажата в FireFox:
$(document).keypress(function(e) {
console.log(e.which);
});
Кажется, должен быть способ захватить ключ Delete, но это двусмысленный термин, поэтому Google не очень помогает в этом.
Ответы
Ответ 1
Нельзя использовать событие keypress
, но событие keyup
или keydown
, потому что событие keypress
предназначено для реальных (печатных) символов. keydown
обрабатывается на более низком уровне, поэтому он будет захватывать все непечатаемые клавиши, такие как delete и enter.
Ответ 2
$('html').keyup(function(e){
if(e.keyCode == 46) {
alert('Delete key released');
}
});
Источник: javascript char коды кодов ключей от www.cambiaresearch.com
Ответ 3
Javascript Keycodes
- e.keyCode == 8 для backspace
- e.keyCode == 46 для кнопки forward backspace или delete на ПК
За исключением этих подробностей, работает рабочий ответ Колина и Тода.
Ответ 4
event.key === "Удалить"
Более свежий и намного более чистый: используйте event.key
. Нет никаких произвольных номеров!
document.addEventListener('keydown', function(event) {
const key = event.key; // const {key} = event; ES6+
if (key === "Delete") {
// Do things
}
});
Документы Mozilla
Поддерживаемые браузеры