onchange 和 onpropertychange、onblur区别
IE下,当一个HTML元素的属性改变的时候,都能通过 onpropertychange来捕获。例如一个
<input name="text1" id="text1" />
[color=red]对象的value属性被页面的脚本修改的时候,onchange无法捕获到,而onpropertychange却能够捕获。[/color]
也就是说:[color=red]onpropertychange能及时捕获属性值的变化[/color],而onchange在属性值改变时还必须使得当前元素失去焦点(onblur)才可以激活该事件!
如:
例1:
请输入图片地址: <input type="text" name="mytext" size="10" value="" onpropertychange="document.images['myimg'].src=this.value;" /> <img id="myimg" src="/img/common/logo.gif" alt="" />
当text框中的内容被改变时,图片就会立刻被显示出来。而如果用onchange时,改变其值时还需用鼠标单击空白或其他地方使input元素失去焦点(onblur)才能激活该事件,图片显示才会被改变!
例2:
<INPUT id="image" style="WIDTH: 448px; HEIGHT: 22px" onpropertychange="preview.src=image.value" type="file" size="55" name="File1" runat="server">
<IMG id="preview" height="170" alt="" src="" width="256">
http://blog.csdn.net/dxef/archive/2007/03/23/4609952.aspx
按一般理解上的意义来说,onchange应该是在文本框里内容有变化时发现,就是每输入一个字符都应该触发一次,然而结果却表明IE是在输入时并没有触发,而是在input失去焦点时触发了onchange事件,“基本等同于”onblur事件,但onblur事件却没有这个BUG,说明IE对onchange支持有问题。
总结:
1、[color=red]对象的value属性被页面的脚本(js)修改的时候,onchange无法捕获到,而onpropertychange却能够捕获。[/color]当对象首次的值(比如是2000)触发了onchange函数,然后又用js将其值清空(随便怎么改变),此时在输入2000时不能触发onchange函数了,应为他没法捕获到js对属性的修改,他记住的值还是2000 此时可以换用[color=red]onpropertychange函数[/color]
2、如果是js拼出的页面,则会一直循环不断的调用onpropertychange函数,麻烦 这时候就可以改用[color=red]onblur[/color]函数,每次失去焦点的时候判断,比onchange的时候多了,但不会有 上述的错误。
IE下,当一个HTML元素的属性改变的时候,都能通过 onpropertychange来捕获。例如一个
<input name="text1" id="text1" />
[color=red]对象的value属性被页面的脚本修改的时候,onchange无法捕获到,而onpropertychange却能够捕获。[/color]
也就是说:[color=red]onpropertychange能及时捕获属性值的变化[/color],而onchange在属性值改变时还必须使得当前元素失去焦点(onblur)才可以激活该事件!
如:
例1:
请输入图片地址: <input type="text" name="mytext" size="10" value="" onpropertychange="document.images['myimg'].src=this.value;" /> <img id="myimg" src="/img/common/logo.gif" alt="" />
当text框中的内容被改变时,图片就会立刻被显示出来。而如果用onchange时,改变其值时还需用鼠标单击空白或其他地方使input元素失去焦点(onblur)才能激活该事件,图片显示才会被改变!
例2:
<INPUT id="image" style="WIDTH: 448px; HEIGHT: 22px" onpropertychange="preview.src=image.value" type="file" size="55" name="File1" runat="server">
<IMG id="preview" height="170" alt="" src="" width="256">
http://blog.csdn.net/dxef/archive/2007/03/23/4609952.aspx
按一般理解上的意义来说,onchange应该是在文本框里内容有变化时发现,就是每输入一个字符都应该触发一次,然而结果却表明IE是在输入时并没有触发,而是在input失去焦点时触发了onchange事件,“基本等同于”onblur事件,但onblur事件却没有这个BUG,说明IE对onchange支持有问题。
总结:
1、[color=red]对象的value属性被页面的脚本(js)修改的时候,onchange无法捕获到,而onpropertychange却能够捕获。[/color]当对象首次的值(比如是2000)触发了onchange函数,然后又用js将其值清空(随便怎么改变),此时在输入2000时不能触发onchange函数了,应为他没法捕获到js对属性的修改,他记住的值还是2000 此时可以换用[color=red]onpropertychange函数[/color]
2、如果是js拼出的页面,则会一直循环不断的调用onpropertychange函数,麻烦 这时候就可以改用[color=red]onblur[/color]函数,每次失去焦点的时候判断,比onchange的时候多了,但不会有 上述的错误。