Чим відрізняється атрибут onBlur від onChange в HTML?


117

Коли один називається проти іншого? Чи є ситуація, коли onChange буде називатися, але onBlur не називатиметься?

Відповіді:


171

onBlurПодія викликається , коли ви відійшли від об'єкта , не обов'язково, змінивши його значення.

The onChangeПодія викликається тільки тоді , коли ви змінили значення поля і втрачає фокус.

Ви можете поглянути на вступ quirksmode до подій . Це чудове місце для отримання інформації про те, що відбувається у вашому браузері під час взаємодії з ним. Його книга теж хороша.


2
ваше посилання про quirksmode не кажіть про розмиття, просто основні події
stackdave

23

onblur спрацьовує, коли поле втрачає фокус, а onchange - коли значення цього поля змінюється. Однак ці події не завжди відбуватимуться в одному порядку.

У Firefox вкладка із зміненого поля запустить onchange, а потім onblur, і це звичайно те саме зробить в IE. Однак, якщо натиснути клавішу введення замість вкладки, у Firefox він запустить onblur, а потім змінить, тоді як IE, як правило, запускатиметься у вихідному порядку. Однак я бачив випадки, коли IE також спочатку вистрілить, тому будьте обережні. Ви не можете припустити, що або onblur, або зміна відбудуться перед іншим.


10

Приклад зробити речі конкретними. Якщо у вас є вибір таким чином:

<select onchange="" onblur="">
  <option>....
</select>

onblur()викликається , коли ви підете. onchange()Викликається при виборі іншого варіанту з вибору - тобто змінити те , що він в даний момент обраний.


1
Інший приклад: у введеннях типу numberклацання стрілками вгору / вниз позначатиме подію зміни (але не подія розмиття), тоді як введення тексту викликає подія зміни лише тоді, коли поле втрачає фокус.
Кріс Міддлтон

7

У Firefox зміна спрацьовує лише тоді, коли ви клацнете на вкладці або натисніть за межі поля введення. Те саме стосується Onblur. Різниця полягає в тому, що onblur запустить, чи змінили ви щось у полі чи ні. Можливо, що ENTER запустить одне або обидва з них, але ви не знаєте, що якщо ви відключите ENTER у своїх формах, щоб запобігти несподіваним поданням.


4

onBlur - це коли ваша увага більше не перебуває на полі, про яке йдеться.

Властивість onblur повертає код обробника події onBlur (якщо такий є), який існує у поточному елементі.

onChange - коли значення поля змінюється.


4

Я думаю, що тут важливо зазначити, що onBlur () спрацьовує незалежно.

Це корисна тема, але єдине, що вона не уточнює, - це те, що onBlur () запускатиметься кожного разу.

onChange () запускається лише тоді, коли значення буде змінено.


3

onChange - коли щось у полі змінюється, наприклад, ви щось записуєте в текстовому вводі.

onBlur - це коли ви віддаляєте фокус від поля, наприклад, ви писали текст, і ви натиснули його.

Так що насправді вони майже те саме, але для того, щоб onChange поводився так, як onBlur робить щось, у цьому вході потрібно змінити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.