在HTML中的onBlur和onChange属性有什么区别?
什么时候和另一个叫? 有没有一种情况是在更改将被称为,但onBlur不会被称为?
当你离开一个对象而不必改变它的值时, onBlur
事件被触发。
onChange
事件仅在您更改字段的值并失去焦点时才会调用。
你可能想看看quirksmode的事件介绍 。 当您与浏览器进行交互时,这是一个了解浏览器中发生的事情的好地方。 他的书也不错。
当野外失去焦点时,onblur会发射,而当场地的价值发生变化时,onchange会发射。 但是,这些事件并不总是以相同的顺序发生。
在Firefox中,从一个变化的字段中跳出来,然后在onblur上触发onchange,然后在IE中执行。 但是,如果您按下回车键而不是标签,则在Firefox中会触发onblur,然后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()只会在值更改时触发。