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

什么时候和另一个叫? 有没有一种情况是在更改将被称为,但onBlur不会被称为?

当你离开一个对象而不必改变它的值时, onBlur事件被触发。

onChange事件仅在您更改字段的值并失去焦点时才会调用。

你可能想看看quirksmode的事件介绍 。 当您与浏览器进行交互时,这是一个了解浏览器中发生的事情的好地方。 他的书也不错。

当野外失去焦点时,onblur会发射,而当场地的价值发生变化时,onchange会发射。 但是,这些事件并不总是以相同的顺序发生。

在Firefox中,从一个变化的字段中跳出来,然后在onblur上触发onchange,然后在IE中执行。 但是,如果您按下回车键而不是标签,则在Firefox中会触发onb​​lur,然后onchange,而IE通常会以原始顺序触发。 但是,我已经看到IE也会先模糊的情况,所以要小心。 你不能认为,onblur或onchange会在另一个之前发生。

一个例子,使事情具体化。 如果您有以下select:

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

onblur()在您离开时调用。 当你从select中select一个不同的选项时, onchange()被调用 – 也就是说你改变了当前被选中的选项。

在Firefox中,只有当您select或者点击input字段外时,onchange才会触发。 Onblur也是如此。 不同的是,无论你是否在场上改变了任何东西,onblur都会开火。 有可能ENTER会触发其中的一个或两个,但是如果您在表单中禁用了ENTER以防止意外提交,您将不会知道这一点。

onBlur是当你的焦点不在问题的领域。

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

onChange是当字段的值发生变化时。

onChange是当某个字段内的内容发生变化时,例如,你在文本input中写入了某些内容。

onBlur就是当你把注意力从一个领域转移出去的时候,例如你正在写一个文本input,而你点击了它。

所以他们几乎是一样的事情,但onChange行为的方式上Blur做了一些input需要改变。

我认为这里很重要的一点是,无论如何,Blur()都会触发。

这是一个有用的线程,但它唯一没有说明的是onBlur()将每一次都会触发。

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