实时监听输入框值变化的完美方案:oninput & onpropertychange-阿里云开发者社区

开发者社区> 杰克.陈> 正文

实时监听输入框值变化的完美方案:oninput & onpropertychange

简介: 原文:实时监听输入框值变化的完美方案:oninput & onpropertychange   在 Web 开发中经常会碰到需要动态监听输入框值变化的情况,如果使用 onkeydown、onkeypress、onkeyup 这个几个键盘事件来监测的话,监听不了右键的复制、剪贴和粘贴这些操作,处理组合快捷键也很麻烦。
+关注继续查看
原文:实时监听输入框值变化的完美方案:oninput & onpropertychange

  在 Web 开发中经常会碰到需要动态监听输入框值变化的情况,如果使用 onkeydown、onkeypress、onkeyup 这个几个键盘事件来监测的话,监听不了右键的复制、剪贴和粘贴这些操作,处理组合快捷键也很麻烦。因此这篇文章向大家介绍一种完美的解决方案:结合 HTML5 标准事件 oninput 和 IE 专属事件 onpropertychange 事件来监听输入框值变化。

您可能感兴趣的相关文章

 

  oninput 是 HTML5 的标准事件,对于检测 textarea, input:text, input:password 和 input:search 这几个元素通过用户界面发生的内容变化非常有用,在内容修改后立即被触发,不像 onchange 事件需要失去焦点才触发。oninput 事件在主流浏览器的兼容情况如下:

 

  

 

  从上面表格可以看出,oninput 事件在 IE9 以下版本不支持,需要使用 IE 特有的 onpropertychange 事件替代,这个事件在用户界面改变或者使用脚本直接修改内容两种情况下都会触发,有以下几种情况:

  • 修改了 input:checkbox 或者 input:radio 元素的选择中状态, checked 属性发生变化。
  • 修改了 input:text 或者 textarea 元素的值,value 属性发生变化。
  • 修改了 select 元素的选中项,selectedIndex 属性发生变化。

  在监听到 onpropertychange 事件后,可以使用 event 的 propertyName 属性来获取发生变化的属性名称。

  集合 oninput & onpropertychange 监听输入框内容变化的示例代码如下:

<head>
    <script type="text/javascript">
	// Firefox, Google Chrome, Opera, Safari, Internet Explorer from version 9
        function OnInput (event) {
            alert ("The new content: " + event.target.value);
        }
	// Internet Explorer
        function OnPropChanged (event) {
            if (event.propertyName.toLowerCase () == "value") {
                alert ("The new content: " + event.srcElement.value);
            }
        } 
    </script>
</head>
<body>
    Please modify the contents of the text field.
    <input type="text" oninput="OnInput (event)" onpropertychange="OnPropChanged (event)" value="Text field" />
</body>

  使用 jQuery 库的话,只需要同时绑定 oninput 和 onpropertychange 两个事件就可以了,示例代码如下:

$('textarea').bind('input propertychange', function() {
    $('.msg').html($(this).val().length + ' characters');
});

  下面是 JsFiddle 在线演示,如果不能显示请刷新一下页面或者点击后面的链接(http://jsfiddle.net/PVpZf/): 

  最后需要注意的是:oninputonpropertychange 这两个事件在 IE9 中都有个小BUG,那就是通过右键菜单菜单中的剪切删除命令删除内容的时候不会触发,而 IE 其他版本都是正常的,目前还没有很好的解决方案。不过 oninput & onpropertychange 仍然是监听输入框值变化的最佳方案,如果大家有更好的方法,欢迎参与讨论。

  参考资料:

您可能感兴趣的相关文章

 

本文链接:使用 oninput & onpropertychange 监听输入框

编译来源:梦想天空 ◆ 关注前端开发技术 ◆ 分享网页设计资源

hide

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JavaScript 实时监听input中值变化
代码 方式一: 测试 $(function () { $(".et-name").
828 0
实时计算Flink > 独享模式 > Batch(试用) > 创建源表 —— 创建DataHub源表 请输入关键词
本页目录 创建DataHub源表 数据总线(DATAHUB) 属性字段 WITH参数 类型映射 创建DataHub源表 数据总线(DATAHUB) DataHub作为一个流式数据总线,为阿里云数加平台提供了大数据的入口服务。
1926 0
logstash-input-jdbc实现mysql 与elasticsearch实时同步深入详解
如何尽量不改变原有数据库表结构,将这些数据的insert,update,delete操作结果实时同步到elasticsearch(简称ES)呢? 本文基于以上需求点展开实战讨论。
498 0
struts2开发时通过interceptor拦截器实现输入数据过滤前后空格的功能
首先在拦截器注册文件interceptorContext.xml中声明拦截器:   然后配置struts.
592 0
Java实现文本编辑时基于拼音输入的补全原型
尝试中文输入法和IDE补全/提示的集成
721 0
Android绘图监听接口OnPreDrawListener详解
public static interface ViewTreeObserver.OnPreDrawListener 我们先看下API中的定义: 类概述: 为即将绘制视图树时执行的回调函数定义的接口. 共有方法: public abstract boolean onPreDraw ()即将绘制视图树时执行的回调函数。
968 0
[UWP小白日记-15]在UWP手机端实时限制Textbox的输入
原文:[UWP小白日记-15]在UWP手机端实时限制Textbox的输入 说实话重来没想到验证输入是如此的苦逼的一件事情。     网上好多验证都是在输入完成后再验证,我的想法是在输入的时候就限制输入,这样我就不用再写代码来验证了 应为是手机端,所以不用判断其他非法字符,直接把Textbox的属性InputScope设置为"Number"就是了,反正在目前版本的UWP中纯数字键盘还无法切换到其他的字符键盘去 下面的代码是一个金额文本框的验证,算是抛砖引玉吧。
1191 0
logstash-input-jdbc实现oracle 与elasticsearch实时同步详解
logstash-input-jdbc实现mysql 与elasticsearch的解读之前博文已经解析。本次只是在原有的基础上,针对oracle特性部分做解读。
2456 0
+关注
杰克.陈
一个安静的程序猿~
10427
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载