Обработчик или источник события keydown
Устанавливает обработчик перехода клавиши клавиатуры в нажатое состояние, либо, запускает это событие. Метод имеет три варианта использования:
Устанавливает функцию handler в качестве обработчика события keydown, на выбранные элементы.
Метод является аналогом bind("keydown", handler(eventObject)).
handler(eventObject) — функция, которая будет установлена в качестве обработчика. При вызове она будет получать объект события eventObject.
Метод отличается от предыдущего возможностью передавать в обработчик дополнительные данные.
Является аналогом bind("keydown", eventData, handler(eventObject)).
handler(eventObject) — см. выше.
eventData — дополнительные данные, передаваемые в обработчик. Они должны быть представлены объектом в формате: {fName1:value1, fName2:value2, ...}.
Вызывает событие keypress, у выбранных элементов страницы. Метод является аналогом trigger("keydown").
Замечание 1: Убрать установленный обработчик можно с помощью метода unbind().
Замечание 2: Все три варианта использования метода, являются аналогами других методов (см. выше), поэтому все подробности использования keydown(), можно найти в описании этих методов.
Замечание 3: Метод часто используют совместно с keyup(), который обрабатывает возвращение клавиши клавиатуры в ненажатое состояние.
Обработчик может быть установлен на любой элемент страницы, однако он получит уведомление о событии, только если этот элемент будет находиться в фокусе. Поскольку в различных браузерах список элементов, которые могут получать фокус, может отличаться, то надежнее всего будет привязать это событие к элементам формы. Если необходимо отслеживать нажатие клавиши не в отдельном элементе, а на всей странице сразу, то можно привязать обработчик к объекту документа: $(document).keydown(handler).
Код нажатой клавиши
Для того, чтобы узнать какая именно клавиша клавиатуры была нажата, можно посмотреть значение переменной eventObject.which, которая содержит код нажатой клавиши. Надо отметить, что метод keydown как и keyup определяет нажатую клавишу, а не вводимый символ, таким образом, при введении латинских "a" и "A" и кириллических "ф" и "Ф", переменная eventObject.which внутри обработчика события keyup будет содержать одно значение — 65, поскольку все они находятся на одной кнопке. Таблицу с кодами всех клавиш представлена в отдельной статье.
Для того, чтобы узнать вводимый символ (а не клавишу) нужно использовать метод keypress.
Пример
// установим обработчик события keydown, элементу с идентификатором foo // и проверим, какая именно клавиша была нажата $('#foo').keydown(function(eventObject){ alert('Клавиша клавиатуры приведена в нажатое состояние. Код вводимого символа - ' + eventObject.which); }); // вызовем событие keydown на элементе foo $('#foo').keydown(); // установим еще один обработчик события keydown, на этот раз элементам // с классом block. В обработчик передадим дополнительные данные $('.block').keydown({a:12, b:"abc"}, function(eventObject){ var externalData = "a=" + eventObject.data.a + ", b=" + eventObject.data.b; alert('Нажата кнопка клавиатуры. '+ 'В обработчик этого события переданы данные: ' + externalData ); });