Справочник 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.

  1. Примечание:

    Именно keydown, а не .keyup() или .keypress(), обычно используют для горячих клавиш и навигации со стрелками — событие срабатывает раньше остальных и реагирует на служебные клавиши, которых нет в keypress.

  2. Примечание:

    Исторически jQuery нормализовал числовой код клавиши в свойстве event.which, сглаживая различия между keyCode и charCode в разных браузерах (в jQuery 4.0 эта нормализация убрана, which берётся из браузера как есть). Сейчас читаемее и надёжнее нативное свойство event.key — строка вида "Enter", "ArrowLeft", "a"; jQuery копирует его на свой объект события, так что писать event.originalEvent.key не нужно.

  3. Примечание:

    Чтобы отменить действие клавиши по умолчанию (например, прокрутку страницы по пробелу или переход по Tab), вызовите event.preventDefault() внутри обработчика.

  4. В jQuery 3.x и 4.0:

    Шорткат .keydown() deprecated с jQuery 3.3, но не удалён — работает в 3.7.1 и 4.0. Замена: .on("keydown", handler) вместо .keydown(handler), .trigger("keydown") вместо .keydown().

Примеры:

  1. Устаревший, но рабочий синтаксис: закрыть модальное окно по Escape.

    $(document).keydown(function(event) {
      if (event.which === 27) { // Escape
        $('.modal').hide();
      }
    });
  2. Тот же пример через современный .on() и нативное свойство event.key вместо кода клавиши.

    $(document).on('keydown', function(event) {
      if (event.key === 'Escape') {
        $('.modal').hide();
      }
    });
  3. Горячая клавиша сохранения (Ctrl+S) с отменой действия браузера по умолчанию.

    $(document).on('keydown', function(event) {
      // Ctrl+S (на macOS — Cmd+S)
      if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 's') {
        event.preventDefault();
        saveDocument();
      }
    });

[ наверх ]

Вопросы и ответы

Для чего используется .keydown() в jQuery?

Команда .keydown() — сокращённый вариант события keydown, которое возникает при нажатии клавиши на клавиатуре, пока элемент находится в фокусе. Если клавишу удерживать, событие повторяется с частотой, заданной операционной системой (автоповтор). Срабатывает для любых клавиш, включая служебные — Shift, Ctrl, Alt, стрелки, Escape.

Поиск по материалам

Начните вводить — поиск работает по заголовкам и тексту.

Esc — закрытьВсе материалы →