JavaScript. Подробное руководство, 6-е издание, стр. 270
<b> return false;</b><b> }</b><b> }</b><b> // Если все символы оказались допустимыми, скрыть элемент</b><b> // с сообщением, если он был указан.</b><b> if (messageElement) messageElement.style.visibility = "hidden";</b><b> }</b><b>}):</b>События «keypress» и «textinput» генерируются непосредственно перед фактической вставкой нового текста в элемент документа, обладающий фокусом ввода, благодаря чему обработчики этих событий могут предотвратить вставку текста, отменив событие. Броузеры также реализуют событие «input», которое возбуждается после вставки текста в элемент. Это событие нельзя отменить и соответствующий ему объект события не содержит информации о вставленном тексте - оно просто извещает о том, что текстовое содержимое элемента изменилось. Если, к примеру, потребуется обеспечить ввод только символов в верхнем регистре, можно определить обработчик события «input», как показано ниже:
<b>SURNAME: <input type="text" oninput="this.value = this.value.toUpperCase(); "></b>Событие «input» стандартизовано в спецификации HTML5 и поддерживается всеми современными броузерами, кроме IE. Похожего эффекта в IE можно добиться, обнаруживая изменение значения свойства value текстового элемента ввода с помощью нестандартного события «propertychange*. В примере 17.7 демонстрируется, как можно реализовать преобразование всех вводимых символов в верхний регистр переносимым образом.
Пример 17.7. Использование события «propertychange» для определения факта ввода текста
<b>function forceToUpperCase(element) {</b><b> if (typeof element === "string") element=document.getElementByld(element);</b><b> element.oninput = upcase;</b><b> element.onpropertychange = upcaseOnPropertyChange;</b><b> // Простой случай: обработчик события input</b><b> function upcase(event) { this.value = this.value.toUpperCase(): }</b><b> // Сложный случай: обработчик события propertychange</b><b> function upcaseOnPropertyChange(event) {</b><b> var e = event || window.event;</b><b> // Если значение свойства value изменилось</b><b> if (e.propertyName === "value") {</b><b> // Удалить обработчик onpropertychange, чтобы избежать рекурсии</b><b> this.onpropertychange = null;</b><b> // Преобразовать все символы в верхний регистр </b><b> this.value = this.value.toUpperCase();</b><b> // И восстановить обработчик события propertychange</b><b> this.onpropertychange = upcaseOnPropertyChange;</b><b> }</b><b> }</b><b>}</b>17.9. События клавиатуры
События «keydown» и «keyup» возбуждаются, когда пользователь нажимает или отпускает клавишу на клавиатуре. Они генерируются для клавиш-модификаторов, функциональных клавиш и алфавитно-цифровых клавиш. Если пользователь удерживает клавишу нажатой настолько долго, что включается режим автоповтора, будет сгенерировано множество событий «keydown», прежде чем появится событие «keyup».
Объект события, соответствующий этим событиям, имеет свойство
<b>keyCode</b><b>keyCode</b><b>keyCode</b><b>keyCode</b><b>keyCode</b><b>keyCode</b><b>keyCode</b>Подобно объектам событий мыши, объекты событий клавиатуры имеют свойства
<b>altKey, ctrlKey, metaKey</b><b>shiftKey</b>События «keydown* и «кеуuр», а также свойство
<b>keyCode</b><b>keyCode</b><b>key</b><b>key</b><b>key</b>На момент написания этих строк свойство
<b>key</b><b>keyIdentifier</b><b>key</b><b>keyldentifier</b>