onpropertychange、oninput监听input输入框值实时变化

项目中要用到监听input框的输入值,差实时更新数据,开始用input的onchange 方法,但onchange方法必必须要在失去焦点的情况下才能触发,很明显无法满足我们的需求。

图1:

图2 

如图2所示,输入关键字,立即将结果显示在下方方框中,以实现实时查看。

onpropertychange:

IE下,onpropertychange 能用于即时捕获一个html元素的变化情况,而我们常用的onchange,则当 属性值改变时还必须并且当前元素失去焦点(onblur)时才可以激活该事件。但onpropertychange只能在IE下使用。

复制代码
$("#you_input_id").on('input',function(){ //do something  });    
$("#you_input_id").each(function(){ var _this = this; if(this.attachEvent){ this.attachEvent('onpropertychange',function(e){ if(e.propertyName!='value')return; $(_this).trigger('input'); }); } });
复制代码

以上回调函数中会传入一个参数e,该事件有很多属性值,判断当前发生变化的属性名称是否为我们要找的propertyName, 如果propertyName==value,则表示是input 的value值发生变化,则此时调用 ‘input’事件。

oninput:

ie之外的大部分浏览器可以兼容oninput,基本用法如下:

<input type="text" name="youinput" oninput="alert(this.value);"/>

如果你使用的jquery库,则可以这样使用:

    $("#you_input_id").on('input',function(){
        //do something
   });

要兼容不同浏览器,只需将如下代码放入即可:

复制代码
$("#you_input_id").on('input',function(){ //do something  });    
$("#you_input_id").each(function(){
                var _this = this;
                if(this.attachEvent){
                    this.attachEvent('onpropertychange',function(e){
                        if(e.propertyName!='value')return;
                        $(_this).trigger('input');
                    });
                }
            });
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值