Содержание:
.on( "keypress" [, eventData ], handler )Возвращает: jQuery
Описание: Привязывает обработчик события к событию "keypress".
-
версия добавлена: 1.7.on( "keypress" [, eventData ], handler )
На этой странице описано событие keypress. О методе .keypress(), который устарел, см. .keypress().
Примечание: поскольку событие keypress не описано ни в одной официальной спецификации, его фактическое поведение может различаться в разных браузерах, версиях браузеров и на разных платформах.
Событие keypress отправляется элементу, когда браузер регистрирует ввод с клавиатуры. Оно похоже на событие keydown, за исключением того, что клавиши-модификаторы и непечатаемые клавиши, такие как Shift, Esc и delete, вызывают события keydown, но не события keypress. Другие различия между этими событиями могут зависеть от платформы и браузера.
Обработчик события keypress можно привязать к любому элементу, но событие отправляется только элементу, находящемуся в фокусе. Элементы, способные получать фокус, могут различаться в разных браузерах, однако элементы управления формами всегда могут получать фокус, поэтому они хорошо подходят для этого типа событий.
Например, рассмотрим HTML-код:
<form>
<fieldset>
<input id="target" type="text" value="Hello there">
</fieldset>
</form>
<div id="other">
Trigger the handler
</div> Обработчик события можно привязать к полю ввода:
$( "#target" ).on( "keypress", function() {
console.log( "Handler for `keypress` called." );
} ); Теперь, когда точка вставки находится внутри поля, нажатие клавиши отображает запись журнала:
Вызван обработчик для `keypress`.
Чтобы вызвать событие вручную, используйте .trigger( "keypress" ):
$( "#other" ).on( "click", function() {
$( "#target" ).trigger( "keypress" );
} ); После выполнения этого кода щелчки по элементу div Вызвать обработчик также будут записывать сообщение в журнал.
Если нужно перехватывать нажатия клавиш в любом месте (например, чтобы реализовать глобальные сочетания клавиш на странице), удобно привязать это поведение к объекту document. Благодаря всплытию событий все нажатия клавиш попадут вверх по DOM к объекту document, если их явно не остановить.
Чтобы определить, какой символ был введен, изучите объект event, переданный функции-обработчику. Браузеры используют разные свойства для хранения этой информации, но jQuery нормализует свойство .which, поэтому его можно надежно использовать для получения кода символа.
Обратите внимание: keydown и keyup предоставляют код нажатой клавиши, тогда как keypress указывает, какой символ был введен. Например, строчная буква «a» будет представлена числом 65 в keydown и keyup, но числом 97 в keypress. Заглавная буква «A» во всех событиях представлена числом 65. Поэтому для перехвата специальных клавиш, таких как клавиши со стрелками, лучше использовать .keydown() или .keyup().
Пример:
Показать объект события при нажатии клавиши в поле ввода. Примечание: в этом примере для вывода объекта события используется простой плагин $.print() (https://api.jquery.com/resources/events.js).
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>on demo</title>
<style>
fieldset {
margin-bottom: 1em;
}
input {
display: block;
margin-bottom: .25em;
}
#print-output {
width: 100%;
}
.print-output-line {
white-space: pre;
padding: 5px;
font-family: monaco, monospace;
font-size: .7em;
}
</style>
<script src="https://code.jquery.com/jquery-4.0.0.js"></script>
</head>
<body>
<form>
<fieldset>
<label for="target">Type Something:</label>
<input id="target" type="text">
</fieldset>
</form>
<button id="other">
Trigger the handler
</button>
<script src="/resources/events.js"></script>
<script>
var xTriggered = 0;
$( "#target" ).on( "keypress", function( event ) {
if ( event.which == 13 ) {
event.preventDefault();
}
xTriggered++;
var msg = "Handler for `keypress` called " + xTriggered + " time(s).";
$.print( msg, "html" );
$.print( event );
} );
$( "#other" ).on( "click", function() {
$( "#target" ).trigger( "keypress" );
} );
</script>
</body>
</html> Демонстрация:
.trigger( "keypress" )Возвращает: jQuery
Описание: Вызывает событие "keypress" для элемента.
-
версия добавлена: 1.0.trigger( "keypress" )
- "keypress"Тип: stringСтрока
"keypress".
-
См. описание .on( "keypress", ... ).