.keydown() – обработчик перехода клавиши клавиатуры в нажатое состояние
.keydown() – устанавливает обработчик перехода клавиши клавиатуры в нажатое состояние, либо, запускает это событие.
Метод имеет три варианта использования.
.keydown( handler )
- handler – функция, которая будет установлена в качестве обработчика.
.keydown( [eventData ], handler )
- eventData – объект содержащий данные, для передачи в обработчик. Должны быть представлены в формате
{fName1:value1, fName2:value2, ...}
; - handler – функция, которая будет установлена в качестве обработчика.
.keydown()
Вызывает событие keypress
, у выбранных элементов страницы.
В первых двух вариантах, этот метод является сокращенной версией .on( "keydown", handler )
, а в третьем – .trigger( "keydown" )
.
Событие keydown
отправляется элементу, когда пользователь нажимает клавишу на клавиатуре. Если клавиша удерживается нажатой, то событие вызывается многократно. Это событие может быть прикреплено к любому элементу, но сработает только на тех элементах, которые имеют фокус. Список элементов, которые могут получить фокус, варьируются в зависимости от браузера, поэтому надежнее всего будет привязать это событие к элементам формы, так как они всегда могут получить фокус.
Для примера рассмотрим html:
<form> <input id="target" type="text" value="Hello there"> </form> <div id="other"> Trigger the handler </div>
Обработчик события может быть привязан к полю ввода:
$( "#target" ).keydown(function() { alert( "Вызвано событие .keydown()" ); });
При нажатии клавиши в поле ввода мы увидим сообщение “Вызвано событие .keydown()”.
Чтобы инициировать событие вручную, примените .keydown()
без аргумента:
$( "#other" ).click(function() { $( "#target" ).keydown(); });
При клике мышью в область с id="other"
будет вызвано событие и мы также увидим сообщение.
Поскольку метод .keydown()
является сокращенной версией .on( "keydown", handler )
, он может быть удален с помощью .off( "keydown" ).
Если необходимо установить обработчик нажатия клавиши в любом месте страницы (например, для реализации глобальных сочетаний клавиш), то лучше всего прикрепить это поведение к объекту документа. Событие нажатия клавиши “всплывает” по DOM, если не будет явно остановлено. Например, можно реализовать закрытие всплывающего окна по Esc:
$(document).keydown(function(eventObject){ if ( eventObject.which == 27 ) { // нажата клавиша Esc // ваша функция закрытия окна }; });
Код нажатой клавиши
В примере выше для того, чтобы узнать какая именно клавиша клавиатуры была нажата, мы можем посмотреть значение переменной eventObject.which
, которая содержит код нажатой клавиши. Код клавиши Esc равен 27, поэтому если условие верно, вызывается код закрытия окна.
Надо отметить, что метод keydown
как и keyup
определяет нажатую клавишу, а не вводимый символ, таким образом, при вводе латинских “q” и “Q” и кириллических “й” и “Й”, переменная eventObject.which
внутри обработчика события keyup
будет содержать одно значение — 81, поскольку все они находятся на одной кнопке.