WdatePicker 屏蔽 onchange 的解决方法

刚遇到个问题,就是在 <input 中 绑定 WdatePicker 控件后, input 标签的 onchange 事件被屏蔽了,onchange方法是WdatePicker 的内置的方法,所以被屏蔽使用,没办法,只能使用其他的方法实现onchange功能.

       最后,查阅资料:onpropertychange事件(onpropertychange能够捕获每次改,onpropertychange 事件被触发的机会就多了很多)只在对象(或元素)某一个property 被改变,这个事件都会随之触发,看,多好用的一个事件啊!不过还是存在问题呢! 

   onpropertychange 不被firefox所支持,如果想在firefox下正常使用,需要用oninput属性, 且需要用  addEventListener来注册事件。 

   利用IE的onpropertychange事件和在FF中具有同样效果的oninput事件,这两个事件用在<input type='text'>中就是来监视input标签的属性的变化,因为onpropertychange是IE的特有事件,所以首先还要判断浏览器的类型来选择给<input>标签增加相对应的事件监听,在 IE下给<input>添加onpropertychange事件监听,在FF下添加oninput事件监听,只要用户的输入值发生变化就会出发相应的事件,这样我就能随时取得用户输入如的值,进而进行动态过滤查询! 

    另外,attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列) 
          addEventListener方法 用于 Mozilla系列 

  兼容性代码测试 

var starttime= document.getElementByIdx_x("starttime"); 
  if("\v"=="v") { //判断浏览器是否是IE 
      starttime.onpropertychange = times; 
  }else{ 
     starttime.addEventListener("input",times,false); 
  } 
function times(){ 
    document.getElementByIdx_x('starttime').innerHTML=starttime.value; 
} 



总结 

    在文本框输入数据的时候,当键盘按下并放开的时候可以使用 onkeyup来检测事件; 

    可是有的时候就像我这次的需求,我们输入数据是采用粘贴的方式而不是键盘输入,这就需要实时检测文本框状态的改变。 

     onchange触发事件必须满足两个条件: 

        1、当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效) 

        2、当前对象失去焦点(onblur); 
        简而言之:onchange需要执行某个事件才可以捕获。 

     onpropertychange的话,只要当前对象属性发生改变,都会触发事件,因此用途更为广泛,只可惜它是兼容IE ; 简而言之: onpropertychange能够捕获每次改变; 
     oninput是onpropertychange的非IE浏览器版本,支持 firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事件,它只在对象value值发生改变时奏效。 

        attachEvent和addEventListener的区别! 

        attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列) 
        addEventListener方法用于 Mozilla系列 

oninput与onpropertychange失效的情况: 
(1)oninput事件:a). 当脚本中改变value时,不会触发;b). 从浏览器的自动下拉提示中选取时,不会触发。 
(2)onpropertychange事件:当input设置为disable=true后,onpropertychange不会触

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值