.keypress() — обработчик ввода символа с клавиатуры
.keypress() — устанавливает обработчик ввода символа с клавиатуры, либо, запускает это событие.
Метод имеет три варианта использования.
.keypress( handler )
- handler — функция, которая будет установлена в качестве обработчика.
.keypress( [eventData ], handler )
- eventData — объект содержащий данные, для передачи в обработчик. Должны быть представлены в формате {fName1:value1, fName2:value2, …};
- handler — функция, которая будет установлена в качестве обработчика.
.keypress()
Вызывает событие keypress, у выбранных элементов страницы.
Примечание: поскольку событие keypress не покрывается какой-либо официальной спецификацией, фактическое поведение, возникающее при его использовании, может различаться в разных браузерах, версиях браузеров и платформах.
В первых двух вариантах, этот метод является сокращенной версией .on( "keypress", handler ), а в третьем — .trigger( "keypress" ).
Событие keypress отправляется элементу, когда пользователь нажимает клавишу на клавиатуре. Это похоже на событие keydown, за исключением того, что модификаторы и непечатаемые клавиши, такие как Shift, Esc и Delete, запускают события смены ключа, но не события keypress. Другие различия между этими двумя событиями могут возникать в зависимости от платформы и браузера.
Событие keypress может быть прикреплено к любому элементу, но сработает только на тех элементах, которые имеют фокус. Список элементов, которые могут получить фокус, варьируются в зависимости от браузера, поэтому надежнее всего будет привязать это событие к элементам формы, так как они всегда могут получить фокус.
Для примера рассмотрим html:
<form> <input id="target" type="text" value="Hello there"> </form> <div id="other"> Trigger the handler </div>
Обработчик события может быть привязан к полю ввода:
$( "#target" ).keypress(function() {
alert( "Вызвано событие .keypress()" );
});
При нажатии клавиши в поле ввода мы увидим сообщение «Вызвано событие .keypress()».
Чтобы инициировать событие вручную, примените .keypress() без аргумента:
$( "#other" ).click(function() {
$( "#target" ).keypress();
});
При клике мышью в область с id="other" будет вызвано событие и мы также увидим сообщение.
Если необходимо установить обработчик нажатия клавиши в любом месте страницы (например, для реализации глобальных сочетаний клавиш), то лучше всего прикрепить это поведение к объекту документа. Событие нажатия клавиши «всплывает» по DOM, если не будет явно остановлено.
Код нажатой клавиши
В примере выше для того, чтобы узнать какая именно клавиша клавиатуры была нажата, мы можем посмотреть значение переменной eventObject.which, которая содержит код нажатой клавиши. В то время как браузеры используют разные свойства для хранения этой информации, jQuery нормализует свойство .which чтобы вы могли надежно использовать его для извлечения кода символа.
Обратите внимание, что методы keydown и keyup определяют нажатую клавишу, а keypress указывает, какой символ был введен. Таким образом,при вводе латинской «a» переменная eventObject.which внутри обработчиков события keydown или keyup будет содержать значение 65, а внутри обработчика keypress — 97. В верхнем регистре «А» сообщается как 65 по всем событиям. Из-за этого различия, обработка специальных нажатий клавиш, таких как клавиши со стрелками, keydown или keyup — лучший выбор.
Дополнительные замечания
Поскольку метод .keypress() является сокращенной версией .on( "keypress", handler ), он может быть удален с помощью .off( "keypress" ).
Люблю минимализм в дизайне.
Добрый день, а подскажите как можно сделать , что когда пользователь заходит на страницу сайта и просматривает её, идет имитация ввода с клавиатуры любых символов, но чтобы пользователь не видел этого.
С помощью jQuery? В принципе легко реализуется ввод определенного набора символов в поле, но не совсем понятна задача — для чего это?