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


117

什么时候与另一个相对?是否存在会调用onChange但不会调用onBlur的情况?

Answers:


171

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

onChange仅当您更改了字段的值并且失去焦点时才调用该事件。

您可能想看一看quirksmode对事件的介绍。在与浏览器进行交互时,这是获取有关浏览器正在运行的信息的好地方。他的书也很好。


2
您有关quirksmode的链接不谈论模糊,仅谈论基本事件
stackdave

23

当一个字段失去焦点时,onblur触发,而当该字段的值更改时,onchange触发。但是,这些事件并非总是以相同的顺序发生。

在Firefox中,跳出更改的字段会先触发onchange,然后触发onb​​lur,通常在IE中也是如此。但是,如果您按Enter键而不是Tab键,则在Firefox中,它将先触发onb​​lur然后onchange,而IE通常会按原始顺序触发。但是,我已经看到IE也会首先触发模糊的情况,因此请小心。您不能假设onblur或onchange会先于另一个发生。


10

一个使事情具体化的例子。如果您这样选择:

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

onblur()当您离开时被调用。在onchange()当你从选择不同的选项称为-即你改变就是它的当前选择。


1
另一个示例:在type输入中number,单击上/下箭头将触发更改事件(但不会触发模糊事件),而键入仅在字段失去焦点时才引起更改事件。
克里斯·米德尔顿

7

在Firefox中,仅当您在选项卡上单击或单击之外时,onchange才会触发。Onblur也是如此。区别在于,无论您是否在现场进行了任何更改,onblur都会触发。ENTER可能会激发这两者之一或两者,但是您不知道是否在表单中禁用ENTER以防止意外提交。


4

onBlur是当您不再关注相关领域时。

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

onChange是字段值更改时。


4

我认为必须在此指出onBlur()会触发。

这是一个有用的线程,但唯一不清楚的是onBlur()每次都会触发。

仅当值更改时,onChange()才会触发。


3

onChange是字段中的某些内容发生更改时,例如,您在文本输入中写了一些内容。

onBlur是当您将注意力从某个字段移开时,例如,您在输入文本时,已单击它。

因此,实际上它们几乎是同一回事,但要使onChange的行为与onBlur在输入中所做的事情一样,需要更改。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.