jQuery предоставляет удобный и лаконичный способ работы с событиями
клавиатуры, позволяя обрабатывать нажатия клавиш и реагировать на них
без необходимости писать громоздкий чистый JavaScript-код. Основные
события клавиатуры можно разделить на три категории:
keydown, keypress и keyup.
keydownСобытие keydown возникает в момент нажатия
клавиши. Оно срабатывает сразу после того, как клавиша была
нажата, и позволяет отследить как функциональные клавиши (Shift, Ctrl,
Alt), так и обычные символы.
Синтаксис:
$(selector).keydown(function(event) {
console.log(event.key); // отображает нажатую клавишу
console.log(event.keyCode); // отображает код клавиши
});
Особенности:
Срабатывает до вставки символа в поле ввода.
Позволяет предотвратить стандартное поведение
клавиши с помощью event.preventDefault().
В event доступны свойства:
key — строковое представление клавиши
("a", "Enter", "Shift").keyCode — числовой код клавиши.altKey, ctrlKey, shiftKey,
metaKey — булевы значения для проверки нажатия
модификаторов.Пример использования:
$('#inputField').keydown(function(event) {
if (event.key === "Enter") {
alert("Нажата клавиша Enter");
}
});
keypressСобытие keypress возникает при нажатии клавиши,
которая вводит символ. Оно отличается от keydown
тем, что не срабатывает для функциональных клавиш вроде
Shift или Arrow.
Особенности:
event.charCode позволяет получить код
символа.Пример использования:
$('#inputField').keypress(function(event) {
console.log("Нажат символ: " + String.fromCharCode(event.which));
});
В современных реализациях
keypressпостепенно заменяется наkeydownиkeyupиз-за более предсказуемой работы и поддержки функциональных клавиш.
keyupСобытие keyup срабатывает после отпускания
клавиши. Оно удобно для отслеживания окончательного ввода и
изменения состояния элементов формы.
Пример использования:
$('#inputField').keyup(function(event) {
console.log("Отпущена клавиша: " + event.key);
});
Особенности:
jQuery предоставляет сокращённые методы для каждого события:
.keydown(handler) — сокращение для
.on('keydown', handler)..keypress(handler) — сокращение для
.on('keypress', handler)..keyup(handler) — сокращение для
.on('keyup', handler).Также можно использовать метод .on() для привязки
нескольких событий одновременно:
$('#inputField').on('keydown keyup', function(event) {
console.log(event.type + " — " + event.key);
});
Для обработки определённых клавиш удобно использовать конструкции с
switch или if:
$('#inputField').keydown(function(event) {
switch(event.key) {
case "ArrowUp":
console.log("Вверх");
break;
case "ArrowDown":
console.log("Вниз");
break;
case "Escape":
console.log("Отмена");
break;
}
});
Также можно использовать event.which или
event.keyCode для кроссбраузерной совместимости:
$('#inputField').keydown(function(event) {
if (event.which === 13) { // Enter
console.log("Нажата клавиша Enter");
}
});
Для обработки комбинаций клавиш проверяются модификаторы:
$(document).keydown(function(event) {
if (event.ctrlKey && event.key === "s") {
event.preventDefault();
console.log("Сохранение документа");
}
});
ctrlKey — проверка нажатия Ctrl.shiftKey — проверка Shift.altKey — проверка Alt.metaKey — проверка Command (Mac).keyup, так как на момент keydown
символ ещё не вставлен.keydown, чтобы сразу предотвратить стандартное
действие.event.preventDefault() позволяет
полностью контролировать поведение клавиш.event.key, так и
event.which для лучшей совместимости со старыми
браузерами.События клавиатуры в jQuery позволяют создавать динамичные формы, обработчики горячих клавиш и интерактивные интерфейсы без сложной работы с чистым DOM API. Их правильное использование повышает отзывчивость и удобство пользовательских приложений.