Какие события возникают у <input type = «number» /> при изменении его значения?


95

Просто интересно, знает ли кто-нибудь, какие события <input type="number" />срабатывает элемент HTML5 при нажатии на его стрелки вверх / вниз:

пример ввода числа

Я уже использую, onblurкогда фокус покидает поле ввода.


Кажется, это ошибка хрома stackoverflow.com/questions/44978087/…
Ориоль Хименес

Ответы:


75

change будет событием, которое запускается при изменении значения поля.

Я думаю, что событие HTML5 inputтоже сработает.


37
oninputсрабатывает только при нажатии стрелок «вверх» и «вниз».
N 1.1

2
но onchange срабатывает только при размытии, по крайней мере, в firefox. Думаю, нам придется искать нажатие клавиш.
andho

onchange и oninput работали в Opera, но только oninput будет работать в Chrome (и только тогда, когда я верну false из обработчика событий - в противном случае Chrome будет многократно запускать событие oninput)
Ян Оксли

2
changeне срабатывает при вводе значения, только при нажатии кнопок (по крайней мере, в Firefox).
Timmmm 01

5
inputкак слияниеkeyup change
Thanh Trung

37

Я обнаружил, что для jQuery следующий код охватывает ввод с клавиатуры, изменения колесика мыши и щелчки кнопок в Chrome, а также обрабатывает ввод с клавиатуры в Firefox.

$("input[type=number]").bind('keyup input', function(){
    // handle event
});

2
Добавьте к этому «изменение», и это прекрасно. Вы все равно захотите прислушаться к внешним изменениям, и в любом случае нет ничего плохого в том, чтобы добавить его.
Мэтт Флетчер

А также колесо мыши, если вы хотите отслеживать события прокрутки внутри поля ввода.
Мэтт Флетчер

4
Обратите внимание, что .bind()теперь устарело в пользу.on()
Michael Hays

7

Я нашел это onkeyupиonchange рассмотрел все в Chrome 19. Он обрабатывает прямой ввод значений, нажатие клавиши со стрелкой вверх, нажатие кнопок и прокрутку колеса мыши.

onchange одного будет достаточно в Chrome, но другие браузеры, которые отображают поле только как текстовое поле, нуждаются в onkeyup привязке, которая отлично работает для чтения нового значения.

Привязка mousewheelсобытия отдельно была менее успешной. Событие сработало слишком рано - до обновления значения поля - и поэтому всегда давало предыдущее значение поля.


Это также верно и для Firefox.
barfuin

5

В onchangeсобытие срабатывает на размытость , но как oninputсобытие срабатывает при вводе. Может быть, вы захотите установить таймер на oninputсобытие и запустить onchangeсобытие, когда пользователь перестал печатать на секунду?


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.