Spec-Zone.ru › jQuery

событие keypress

Привяжите обработчик события к событию "keypress" или вызовите это событие для элемента.

Содержание:

  • .on( "keypress" [, eventData ], handler )
    • .on( "keypress" [, eventData ], handler )
  • .trigger( "keypress" )
    • .trigger( "keypress" )

.on( "keypress" [, eventData ], handler )Возвращает: jQuery

Описание: Привязывает обработчик события к событию "keypress".

  • версия добавлена: 1.7.on( "keypress" [, eventData ], handler )

    • "keypress"
      Тип: string
      Строка "keypress".
    • eventData
      Тип: Anything
      Объект, содержащий данные, которые будут переданы обработчику события.
    • handler
      Тип: Function( Event eventObject )
      Функция, выполняемая при каждом вызове события.

На этой странице описано событие 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", ... ).

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/keypress

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API