在 HTML 中 onBlur 和 onChange 属性有什么区别?

什么时候叫一个对另一个?有没有这样一种情况: Change 会被调用,而 onBlur 不会被调用?

165142 次浏览

当您从对象移开而不必更改其值时,将触发 onBlur事件。

只有当您更改了字段的值并且失去焦点时,才会调用 onChange事件。

你可能想看看 离奇莫德事件介绍。这是一个非常好的地方,当你与浏览器互动时,你可以在这里获得浏览器中正在发生的事情的信息。他的书也很好。

OnChange 是指字段中的某些内容发生了变化,例如,您在文本输入中写入了某些内容。

OnBlur 是当你把焦点从一个字段上移开,例如,你在写一个文本输入,你已经点击了它。

所以它们实际上几乎是一样的,只不过 onChange 的行为方式和 Blur 一样,需要改变输入。

当你的注意力不再集中在有问题的领域时。

onblur属性返回当前元素上存在的 onBlur 事件处理程序代码(如果有的话)。

onChange是字段值更改时的值。

一个让事情具体化的例子。如果你有这样的选择:

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

当你导航离开时,onblur()被调用。当您从选择中选择一个不同的选项时,就会调用 onchange()——也就是说,您可以更改当前选择的内容。

当一个字段失去焦点时 onFuzzy 会触发,而当该字段的值发生变化时 onchange 会触发。但是,这些事件并不总是以同样的顺序发生。

在 Firefox 中,从已更改的字段中选择制表符将触发 onchange,然后再触发 onFuzzy,在 IE 中通常也是如此。然而,如果你按下回车键而不是 Tab 键,在 Firefox 中,它会先触发 onFuzzy,然后是 onchange,而 IE 通常会按照原来的顺序触发。但是,我见过 IE 也会首先发射模糊,所以要小心。您不能假设 on模糊或 onchange 会在另一个之前发生。

在 Firefox 中,onchange 只有当您选择标签或者单击输入域外部时才会触发。Onblur 也是如此。不同之处在于,无论您是否更改了字段中的任何内容,onFuzzy 都会启动。ENTER 可能会触发其中一个或两个,但是如果在窗体中禁用 ENTER 以防止意外提交,则不会知道这一点。

我认为在这里需要注意的是,onBlur()无论如何都会开火。

这是一个有用的线程,但唯一没有澄清的是,onBlur()将每次触发。

onChange()只有在值更改时才会触发。