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

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

您可能感兴趣的相关文章

  • 60款非常精美的 jQuery 幻灯片演示和下载
  • 精心挑选的优秀jQuery Ajax分页插件和教程
  • 推荐几款非常棒的 jQuery 全景图片展示插件
  • 精心挑选的优秀 jQuery 文本特效插件和教程
  • 精心挑选的美轮美奂的 jQuery 图片特效插件

  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 9function OnInput (event) {alert ("The new content: " + event.target.value);}// Internet Explorerfunction 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" οninput="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 event (Internet Explorer)》
  • 《oninput event | input event》
  • 《HTML5 Input Event Handlers and User-Experience》
  • 《onpropertychange event | propertychange event》
  • 《A HTML5 Browser maze, oninput support》

您可能感兴趣的相关文章

  • 60款非常精美的 jQuery 幻灯片演示和下载
  • 精心挑选的优秀jQuery Ajax分页插件和教程
  • 8款非常棒的响应式 jQuery 幻灯片插件推荐
  • 精心挑选的优秀 jQuery 文本特效插件和教程
  • 精心挑选的美轮美奂的 jQuery 图片特效插件

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

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

hide

posted on 2014-05-18 09:24 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3734880.html

实时监听输入框值变化的完美方案:oninput onpropertychange相关推荐

  1. jquery实时监听输入框值变化

    在做web开发时候很多时候都需要即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感.而采用onchange时间又往往是在输入框失去焦点(onblur)时候触发,有时候并不能满足条 ...

  2. angular监听输入框值的变化_angular 实时监听input框value值的变化触发函数方法

    用angulajs + ionic 做了一个登陆页面.效果要通过监听输入框的变化来判断登陆按钮是否可点击.当至少一个输入框为空时登录按钮不可点击.一开始是用的jquery的方法做的,后来发现刷新当前页 ...

  3. asp.net监听输入框值的即时变化onpropertychange、oninput

    要达到的效果 很多情况下我们都会即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感.比如即时显示输入框已经被输入的字节数,或者即时读取输入的值来进行搜索引导,也就是google的 ...

  4. 6- js监听输入框值的即时变化onpropertychange、oninput

    js监听输入框值的即时变化onpropertychange.oninput 标题: js监听输入框值的即时变化onpropertychange.oninput事件 参考: http://m.jb51. ...

  5. JS实时监听DOM元素变化 - MutationObserver

    使用 MutationObserver API实时监听DOM元素变化 创建 MutationObserver 实列,接受一个用于监听到DOM元素变化的回调函数 const handleListenCh ...

  6. javascript监听输入框_html通过JS/jQuery实现 实时监听输入框input的内容

    最近在做一个功能:联想搜索功能.具体实现做法如下:通过实时监听输入框input的内容,来实时发起网络请求,向后台获取联想到的搜索内容并展示到前台.那么该如何实现input的实时监听呢 做法一(jQue ...

  7. onchange监听input值变化及input隐藏后change事件不触发的原因与解决方法(设置readonly后onchange不起作用的解决方案)

    onchange监听input值变化及input隐藏后change事件不触发的原因与解决方法(设置readonly后onchange不起作用的解决方案) 参考文章: (1)onchange监听inpu ...

  8. onchange监听input值变化及input隐藏后change事件不触发的原因与解决方法

    1. onchange事件监听input值变化的使用方法: <input id="test"></input>$("input").ch ...

  9. onchange监听input值变化及input隐藏后change事件不触发的原因与解决方法(设置readonly后onchange不起作用的解决方案)...

    转自:https://www.cnblogs.com/white0710/p/7338456.html 1. onchange事件监听input值变化的使用方法: <input id=" ...

最新文章

  1. java正则表达式的使用_java正则表达式使用
  2. linux sys伪用户作用,【原创】Linux版 对sys用户进行审计的示例
  3. linux 怎么样复制文件夹内所有文件到另一个文件夹?
  4. 袋装决策树_袋装树是每个数据科学家需要的机器学习算法
  5. 真格量化-50ETF期权波动率策略
  6. SOLOv2论文简读
  7. MySql服务无法连接
  8. RiceQuant开源项目Rqalpha运行结果文件result.pkl读取
  9. html5框架如何快速搭建,AmazeUI框架搭建的方法步骤(图文)
  10. 电脑怎么抠图换背景?如何把白底图片变成透明?
  11. Spring Boot 之---什么是热部署?---怎么使用?
  12. 【Matplotlib】(二)图例legend
  13. python统计列分布_pd.DataFrame统计各列数值多少的实例
  14. 有关队列的操作 python
  15. OneNote用完画笔怎么从绘图模式回到打字模式
  16. 开放、自由、参与 ------记“武汉大学开源技术俱乐部成立仪式暨Sun技术讲坛”...
  17. XTU数据结构(C语言版)
  18. CSDN问答——测评
  19. 自学shell编程——第1讲(基础概念、变量、符号、字符串处理)
  20. CES 2016逛展攻略:三大展区万家展台 你不能错过!

热门文章

  1. eclipse preference没有server_Java Web开发的前期准备工作,部署Tomcat服务器和Server环境创建...
  2. LeetCode 02.两数相加
  3. sizeof不是java关键字是_下列哪项不是Java语言的关键字。
  4. python package和目录_PyCharm中Directory与Python package的区别
  5. 光纤收发器如何选择?
  6. 工业交换机安全性能的必要性
  7. 【渝粤教育】21秋期末考试互联网营销概论10092k2
  8. [渝粤教育] 西南科技大学 高级英语(2) 在线考试复习资料
  9. 2021年春季学期期末统一考试 西方经济学(本) 试题
  10. 织梦模板不支持html,html中{}是什么样的模板?如何使用它?HTML5template模板标签是什么?html常用的字体样式是什么?dede后台文件为什么不能生成html?...