В чем разница между атрибутами onBlur и onChange в HTML? - PullRequest
106 голосов
/ 24 апреля 2009

Когда один называется против другого? В какой ситуации вызывается onChange, но не вызывается onBlur?

Ответы [ 7 ]

155 голосов
/ 24 апреля 2009

Событие onBlur наступает, когда вы отошли от объекта, не обязательно изменив его значение.

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

Возможно, вы захотите взглянуть на введение quirksmode в события . Это отличное место для получения информации о том, что происходит в вашем браузере, когда вы взаимодействуете с ним. Его книга тоже хороша.

18 голосов
/ 17 мая 2009

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

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

10 голосов
/ 24 апреля 2009

Пример, чтобы сделать вещи конкретными. Если у вас есть выбор таким образом:

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

onblur() вызывается, когда вы уходите. onchange() вызывается, когда вы выбираете другую опцию из выбора - т.е. вы меняете то, что в данный момент выбрано.

7 голосов
/ 24 октября 2012

В Firefox onchange срабатывает только тогда, когда вы нажимаете вкладку или щелкаете за пределами поля ввода. То же самое относится и к Onblur. Разница в том, что onblur сработает независимо от того, изменили ли вы что-нибудь в поле или нет. Вполне возможно, что ENTER запустит один или оба из них, но вы не узнаете об этом, если отключите ENTER в своих формах, чтобы предотвратить неожиданные отправки.

4 голосов
/ 19 февраля 2014

Я думаю, что здесь важно отметить, что onBlur () срабатывает независимо.

Это полезная тема, но единственное, что она не проясняет, это то, что onBlur () будет запускаться каждый раз.

onChange () будет срабатывать только при изменении значения.

4 голосов
/ 24 апреля 2009

onBlur - это когда вы больше не фокусируетесь на рассматриваемом поле.

Свойство onblur возвращает код обработчика события onBlur, если он есть, который существует в текущем элементе.

onChange - это когда значение поля изменяется.

3 голосов
/ 24 апреля 2009

onChange - это когда что-то внутри поля изменяется, например, вы пишете что-то в текстовом поле.

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

Так что на самом деле это почти одно и то же, но onChange ведет себя так, как onBlur делает что-то, что нужно изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...