.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? В принципе легко реализуется ввод определенного набора символов в поле, но не совсем понятна задача – для чего это?