.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" ).

3 ответа к «.keypress() – обработчик ввода символа с клавиатуры»

  1. Добрый день, а подскажите как можно сделать , что когда пользователь заходит на страницу сайта и просматривает её, идет имитация ввода с клавиатуры любых символов, но чтобы пользователь не видел этого.

    1. С помощью jQuery? В принципе легко реализуется ввод определенного набора символов в поле, но не совсем понятна задача – для чего это?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *