У меня есть входной тег. Этому тегу не выключили функцию автоматического заполнения, таким образом, нужно не обязательно отпустить клавишу, чтобы изменить значение этого поля и сфокусировать другой. Мой вопрос: как я могу обнаружить КАКИЕ-ЛИБО изменения значения этого конкретного поля, как, например.
<input onvaluechange="//do following..." />
Атрибут JavaScript onchange
не стреляет в изменение значения, только на изменениях как размытость, фокус, и т.д...
Править: Это также не обязательно - нажатие клавиши. Из-за автозавершения, пользователь может просто щелкнуть мышью по результату автозавершения для изменения значения. Это не стреляло бы onkeydown
событие.
Это также не обязательно является нажатием клавиши. Из-за автозаполнения
... и многих других операций, не связанных с ключами, таких как щелчок правой кнопкой мыши, вырезание / вставка, перетаскивание, отмена / повтор, корректировка орфографии и так далее.
HTML5 определяет событие oninput
для отслеживания всех прямых изменений.
К сожалению, поддержки браузеров сегодня нет (нет поддержки в IE, и есть некоторые ошибки в других), так что все, что вы можете сделать, если вам действительно нужно обнаруживать все изменения входного значения раньше, чем onchange
заключается в использовании setInterval
для добавления опросчика, который постоянно сравнивает с предыдущим значением.
Вы можете использовать onKeyPress
для отслеживания изменений, вводимых пользователем.
Например:
<input type='input' onKeyPress='SomeScriptMethod();'>