В настоящее время мы используем jQuery для запуска пересчета в поле ввода формы. Используя HTML5, мы получаем хорошие счетчики в Safari (по крайней мере, на Mac 5.0.3). Однако обновление поля с помощью элементов управления счетчиком, похоже, вообще не вызывает событие изменения. Как будто поле не обновлялось. Это просто недосмотр в WebKit? Или есть обходные пути?

Редактировать: изменение счетчика даже не вызывает событие ввода.

5
Erik Veland 10 Фев 2011 в 03:47

4 ответа

Это работает для меня в Chrome 11 и Opera 11.10:

<fieldset class="col" oninput="exoutput.value = exnumber.valueAsNumber * exnumber.valueAsNumber;"> 
    <legend>Output event handler</legend> 
    <label for="exnumber">Number: </label> 
    <input type="number" id="exnumber" placeholder="Enter a number" min="0" value="4" required>  
    <label for="exoutput">Output: </label> 
    <output for="exnumber" id="exoutput">16</output> 
</fieldset>

Firefox 4 не работает с valueAsNumber, но небольшое изменение заставляет его работать во всех трех. Извините, у меня сейчас нет Safari для тестирования.

0
robertc 6 Май 2011 в 18:30

Событие изменения запускается, когда ввод потерял фокус и значение изменяется, при нажатии на счетчик ввод не теряет фокус, поэтому событие изменения не будет запущено.

0
otakustay 10 Фев 2011 в 06:25
Это имеет большой смысл в объяснении, почему (даже если это немного нелогично, что поле не будет запускать событие изменения, когда оно явно было изменено, фокус или нет).
 – 
Erik Veland
11 Фев 2011 в 07:09
Однако событие change по-прежнему не срабатывает при расфокусировке поля. Кажется, это ошибка.
 – 
Phrogz
23 Мар 2011 в 21:41

Вы хотите использовать событие oninput. Используйте что-то вроде $("...").bind("input", fn);.

См. http://msdn.microsoft.com/en-us. /библиотека/gg592978(VS.85).aspx

1
gilly3 11 Фев 2011 в 00:06
Да, даже с привязкой как ввода, так и изменения, это не игра в кости. :/
 – 
Erik Veland
11 Фев 2011 в 07:31
1
Похоже, решение на данный момент состоит в том, чтобы отказаться от и вместо этого использовать Erik Veland
11 Фев 2011 в 07:35

$ .click () отлично работает. Если щелкнуть и удерживать, этого не произойдет, пока вы не отпустите.

1
hookedonwinter 15 Апр 2011 в 00:14