onchange与onpropertychange的不同

onpropertychange事件和onchange有些类似,但是也有不同!
IE下,当一个HTML元素的属性改变的时候,都能通过onpropertychange来捕获。例如一个
<input name="text1" id="text1" />
对象的value属性被页面的脚本修改的时候,onchange无法捕获到,而onpropertychange却能够捕获。
也就是说:onpropertychange能及时捕获属性值的变化,而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)才能激活该事件,图片显示才会被改变!

onChange:当前元素失去焦点并且元素的内容发生改变而触发的事件 [鼠标与键盘的触发均可]
所以说当对象的value被脚本改变时不会触发onChange事件,因为用户即没有动鼠标又没动键盘.

PS:firefox 不支持onpropertychange

当元素的任何属性值被改变时均会触发onpropertychange,如:失去焦点、单击输入框等;有时我们只是需要在某个属性被改变时才想要执行onpropertychange中的事件,所以此时,我们需要用JS进行判断,是否为我们需要的属性发生了改变。
示例如下:
<input type="text" value="xxx" id="xx" οnclick="this.myprop='xx'">
<script type="text/javascript">
<!--
document.getElementById('xx').attachEvent('onpropertychange',function(o){
if(o.propertyName!='value')return; //不是value改变不执行下面的操作
//是value改变,则执行函数处理
});
//-->
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值