Справочник API
.keydown() в jQuery
Содержание статьи
-
Категории: Events › Keyboard Events
Устанавливает (или вызывает) обработчики JavaScript события keydown (когда нажата клавиша на клавиатуре) для всех элементов набора jQuery. Актуально для элементов формы и <body>.
Синтаксис и описание:
Добавлено в jQuery 1.0.keydown( handler( eventObject ) )
Добавлено в jQuery 1.4.3.keydown( [ eventData ,] handler( eventObject ) )
Добавлено в jQuery 1.0.keydown( )
Команда .keydown() — сокращённый вариант события keydown, которое возникает при нажатии клавиши на клавиатуре, пока элемент находится в фокусе. Если клавишу удерживать, событие повторяется с частотой, заданной операционной системой (автоповтор). Срабатывает для любых клавиш, включая служебные — Shift, Ctrl, Alt, стрелки, Escape.
Возвращаемое значение: (объект) Набор jQuery.
Параметры:
eventData – (объект) Данные, доступные обработчику через event.data.
handler( eventObject ) – Функция-обработчик события keydown. Нажатую клавишу удобнее всего определять по event.key; числовой код доступен в устаревшем event.which.
Примечание:
Именно keydown, а не .keyup() или .keypress(), обычно используют для горячих клавиш и навигации со стрелками — событие срабатывает раньше остальных и реагирует на служебные клавиши, которых нет в keypress.
Примечание:
Исторически jQuery нормализовал числовой код клавиши в свойстве event.which, сглаживая различия между keyCode и charCode в разных браузерах (в jQuery 4.0 эта нормализация убрана, which берётся из браузера как есть). Сейчас читаемее и надёжнее нативное свойство event.key — строка вида "Enter", "ArrowLeft", "a"; jQuery копирует его на свой объект события, так что писать event.originalEvent.key не нужно.
Примечание:
Чтобы отменить действие клавиши по умолчанию (например, прокрутку страницы по пробелу или переход по Tab), вызовите event.preventDefault() внутри обработчика.
В jQuery 3.x и 4.0:
Шорткат .keydown() deprecated с jQuery 3.3, но не удалён — работает в 3.7.1 и 4.0. Замена:
.on("keydown", handler)вместо .keydown(handler),.trigger("keydown")вместо .keydown().
Примеры:
Устаревший, но рабочий синтаксис: закрыть модальное окно по Escape.
$(document).keydown(function(event) { if (event.which === 27) { // Escape $('.modal').hide(); } });Тот же пример через современный .on() и нативное свойство event.key вместо кода клавиши.
$(document).on('keydown', function(event) { if (event.key === 'Escape') { $('.modal').hide(); } });Горячая клавиша сохранения (Ctrl+S) с отменой действия браузера по умолчанию.
$(document).on('keydown', function(event) { // Ctrl+S (на macOS — Cmd+S) if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 's') { event.preventDefault(); saveDocument(); } });