Захват "Удалить" 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.

Ответ 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

Поддерживаемые браузеры