`

jquery - 实时监听input输入的变化(兼容主流浏览器)

 
阅读更多

       遇到如此需求,首先想到的是change事件,但用过change的都知道只有在input失去焦点时才会触发,并不能满足实时监测的需求,比如监测用户输入字符数。

在经过查阅一番资料后,欣慰的发现firefox等现代浏览器的input有oninput这一属性,可以用三种方式使用它:

1,内嵌元素方式(属性编辑方式)(该方式在IE中测试通过,非IE有待完善)

<input id="test" oninput="console.log('input');" type="text" />

2,句柄编辑方式

document.getElementById('test').oninput=function(){
    console.log('input');
}

3,事件侦听方式(jquery)

$('#test').on('input',function(){
    console.log('input');
})

 

但是,以上代码仅在除了ie的浏览器大大们里才work,那ie该怎么处理呢? 在ie中有一个属性叫做onpropertychange:

<input id="test" onpropertychange="alert('change');" type="text" />

经过调试后马上就会发现,这个属性是在元素的任何属性变化时都会起作用,包括我们这里所提到的value,但至少是起作用了,那接下来的任务就是筛选出property为value的变化。

document.getElementById('test').attachEvent('onpropertychange',function(e) {
    if(e.propertyName!='value') return;
    $(that).trigger('input');
});

在上面代码中的回调函数中会传入一个参数,为该事件,该事件有很多属性值,搜寻一下可以发现有一个我们很关心的,叫做propertyName,也就是当前发生变化的属性名称。然后就相当简单了,只要在回调函数中判断一下是否为我们所要的value,是的话就trigger一下‘input’事件。

 

然后,就可以在主流浏览器中统一用这样的方式来监听‘input’事件了。

$('#test').on('input',function(){
    alert('input');
})

 

最后贴上完整代码:

复制代码
$('#test').on('input',function(){
    alert('input');
})

//for ie
if(document.all){
    $('input[type="text"]').each(function() {
        var that=this;

        if(this.attachEvent) {
            this.attachEvent('onpropertychange',function(e) {
                if(e.propertyName!='value') return;
                $(that).trigger('input');
            });
        }
    })
}

 

出自: http://www.cnblogs.com/asie-huang/archive/2012/07/10/2585038.html

分享到:
评论

相关推荐

    jQuery/JS监听input输入框值变化实例

    该事件兼容所有主流浏览器,并且可以应用于&lt;input&gt;, , 和元素。 接下来,文章介绍了oninput事件。与onchange不同,oninput事件在用户输入时就会触发,即输入框的值发生变化的那一刻就会触发,非常适合需要实时反馈...

    jquery-inputevent:jQuery的跨浏览器oninput事件

    `jquery-inputevent`插件便是为了解决这一问题,提供了在所有主流浏览器中统一且可靠的`oninput`事件处理。 ### 插件介绍 `jquery-inputevent`插件的核心功能是为那些不支持原生`oninput`事件的浏览器(如旧版的IE...

    jquery实现选择图片预览,兼容各大主流浏览器

    本文将详细介绍如何使用jQuery实现一个兼容各大主流浏览器(如谷歌、IE、360浏览器、火狐等)的图片预览功能。 ### 1. jQuery简介 jQuery是一个快速、简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画...

    jquery-timepicker.js

    4. **兼容性**:与主流浏览器兼容,包括Chrome、Firefox、Safari、Edge等。 5. **可扩展**:提供丰富的API和事件,方便扩展和与其他组件集成。 ### 三、安装与引入 首先,确保项目中已经包含了jQuery库。然后,...

    可定制的实时搜索JQUERY插件与主流浏览器兼容.zip

    这个名为"可定制的实时搜索JQUERY插件与主流浏览器兼容.zip"的压缩包提供了一个针对实时搜索功能的jQuery插件,适用于各种主流浏览器,如Chrome、Firefox、Safari、Edge等。 实时搜索,也称为即时搜索或动态搜索,...

    js超萌的猫头鹰登录界面,当输入密码的时候,猫头鹰会用翅膀遮住双眼,兼容主流浏览器

    在本文中,我们将深入探讨如何使用JavaScript实现一个超萌的猫头鹰登录界面,当用户输入密码时,猫头鹰的动画效果会显示其用翅膀遮住双眼,同时确保该功能兼容主流浏览器。这个创意的设计既增加了登录界面的趣味性,...

    Jquery-JS图片上传预览(无浏览器限制)

    在"Jquery-JS图片上传预览"这个主题中,我们将探讨如何利用这两个库来创建一个跨浏览器的图片预览功能,包括对火狐、谷歌和IE等主流浏览器的支持。 首先,我们需要在HTML页面中添加一个`&lt;input&gt;`元素,类型设置为`...

    兼容主流浏览器的图片预览

    总的来说,实现“兼容主流浏览器的图片预览”需要对jQuery、HTML5的`&lt;input type="file"&gt;`和`FileReader`接口有深入理解,同时关注浏览器兼容性和用户体验优化。通过合理的代码组织和技巧,我们可以创建一个既高效又...

    前端项目-jquery-highlighttextarea.zip

    4. **事件监听与处理**:项目可能包含了对用户输入或页面加载的事件监听,例如 `input` 事件用于检测 textarea 内容的变化,`load` 事件用于在页面加载完成后执行高亮操作。 5. **CSS 样式**:为了使高亮效果明显,...

    前端项目-jquery-minicolors.zip

    jQuery MiniColors 支持所有主流浏览器,包括 IE8+,以及现代浏览器如 Chrome、Firefox、Safari 和 Edge。 总结,jQuery MiniColors 是一款强大且易用的颜色选择器插件,能够轻松集成到任何前端项目中,提升用户...

    jquery-softkeyboard-js软键盘插件

    jQuery SoftKeyboard JS 通常具有良好的浏览器兼容性,支持主流的现代浏览器和一些旧版本的浏览器。然而,对于非常老旧的浏览器,可能需要检查其对jQuery的支持情况。 **7. 学习资源** 作为初学者,你可以参考...

    手机端抽屉式搜索框,点击放大镜弹出搜索框,兼容主流浏览器

    "手机端抽屉式搜索框,点击放大镜弹出搜索框,兼容主流浏览器" 这一设计模式是为了解决移动界面有限空间下的搜索功能优化问题。它旨在提供一个既节省屏幕空间又易于使用的搜索解决方案。下面我们将详细探讨这一设计...

    前端项目-jquery.ns-autogrow.zip

    4. **插件实现原理**: "jquery.ns-autogrow"可能通过监听textarea的`input`事件来检测用户输入的变化,然后计算当前内容所需的最小高度,并相应地调整textarea的样式。为了避免闪烁,它可能还会复制一份textarea内容...

    jQuery输入框限制输入内容格式插件

    `jquery.mask.js`兼容主流浏览器,包括Chrome、Firefox、Safari、Edge和IE9+。不过,对于老旧浏览器或不支持jQuery的环境,需要考虑使用polyfill或其他替代方案。 ### 维护与更新 `jquery.mask.js`的源代码位于`...

    jQuery实现美化版的单选框和复选框

    最后,确保你的代码在主流浏览器(如Chrome、Firefox、Safari、Edge和IE11)中都表现良好,进行充分的兼容性测试。 在提供的`jquery-pretty-radio-checkbox`压缩包中,可能包含了实现以上功能的CSS样式文件、...

    js实现浏览器全屏兼容谷歌火狐等

    通过以上步骤,我们就可以创建一个兼容主流浏览器的全屏功能。当用户点击按钮时,页面可以切换到全屏模式,并在退出全屏时自动恢复原状。记住,始终要在实际环境中测试以确保在各个浏览器上的表现一致。文件`bill-...

    jquery仿支付宝input文本输入框放大组件.zip

    在这个组件中,jQuery被用来监听input元素的聚焦和失焦事件,通过修改CSS样式来改变输入框的大小和位置,同时实现平滑的动画过渡效果,以提升用户体验。 具体实现步骤如下: 1. **事件监听**:首先,我们需要使用...

    Jquery插件-手机端选择省市

    5. **兼容性**:考虑到不同的浏览器环境,插件应兼容主流的移动浏览器,如Chrome、Safari、Firefox等。 6. **API接口**:提供API接口供开发者获取和设置用户选择的省市信息,方便集成到业务流程中。 **应用步骤** ...

    jQuery不兼容input的change事件问题解决过程

    在本文中,我们将深入探讨jQuery在处理`input`元素`change`事件时遇到的兼容性问题,以及如何优雅地解决这个问题,以确保在各种主流浏览器中都能得到一致的行为。 在项目开发中,我们经常需要实时响应用户的输入,...

    Bootstrap tagsinput自定义标签插件

    7. **兼容性**:作为基于jQuery的插件,Bootstrap tagsinput在主流浏览器上表现良好,具有良好的跨平台和跨设备兼容性。 在提供的压缩包文件中,我们可以看到以下文件: - **index.html**:这是示例页面,通常包含...

Global site tag (gtag.js) - Google Analytics