• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > js oninput、onchange与onpropertychange事件的用法和区别

js oninput、onchange与onpropertychange事件的用法和区别

作者:wang1006008051 字体:[增加 减小] 来源:互联网 时间:2017-09-16

wang1006008051通过本文主要向大家介绍了onchange和oninput,js oninput,js oninput事件,js中oninput,js onpropertychange等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数。过去一般都使用onchange/onkeyup/onkeypress/onkeydown实现,但是这存在着一些不好的用户体验。比如onchange事件只在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效;而onkeydown/onkeypress/onkeyup在处理复制、粘贴、拖拽、长按键(按住键盘不放)等细节上并不完善。

onpropertychange属性可在某些情况下解决上面存在的问题,不用考虑是否失去焦点,不管js操作还是键盘鼠标手动操作,只要HTML元素属性发生改变即可立即捕获到。遗憾的是,onpropertychange为IE专属的。其他浏览器下如果想要实现这一实时监听的需求,就要用到HTML5中的标准事件oninput,不过IE9以下的浏览器是不支持oninput事件的。

所以我们需要综合oninput和onpropertychange二者来实现文本区域实时监听的功能。举例如下:

例1、对支持oninput的浏览器用oninput,其他浏览器(IE6/7/8)使用onpropertychange:

 

[javascript] view plain copy

  1. var testinput = document.createElement('input');      
  2. if('oninput' in testinput){  
  3.     object.addEventListener("input",fn,false);  
  4. }else{  
  5.     object.onpropertychange = fn;  
  6. }  


例2、对所有ie使用onpropertychange,其他浏览器用oninput:

 

 

 

[javascript] view plain copy

  1. var ie = !!window.ActiveXObject;  
  2. if(ie){  
  3.     object.onpropertychange = fn;  
  4. }else{  
  5.     object.addEventListener("input",fn,false);  
  6. }  

 

 

 

汇总onchange onpropertychange 和oninput事件的区别:

 

下面引用一篇译文:

 

HTML5将oninput事件标准化了,该事件用来检测用户的输入状态。当然,通过使用onkeydown或者onkeyup作为代替也是可以的。这些事件设计本意也并非如此,参见详情。

 

所有的现代浏览器支持oninput,其中包括IE9。对于那些老式浏览器,在不支持该事件时用keydown作为优雅降级。不幸的是,检测浏览器对该oninput事件的支持性并不容易。假定浏览器支持oninput,那么以下这段js代码的返回值为true,否则为false。

 

'oninput' in document.createElement('input')

这段代码在大多数浏览器中正常运行,除了Firefox(见bug #414853),故仍旧需要为oninput作浏览器特性检测。除此以外就没必要为其他浏览器作特性检测了,只需为input和keydown绑定事件,并在oninput事件触发之后删除onkeydown即可。示例如下:

 

 

someElement.oninput = function() {
  el.onkeydown = null;
  // Your code goes here
};
someElement.onkeydown = function() {
  // Your code goes here
}

 

keydown事件仅会被触发一次(在oninput事件触发前),之后再触发oninput。虽然并不完美,但总比写上一大堆oninput特性检测代码要好些吧。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • js oninput、onchange与onpropertychange事件的用法和区别

相关文章

  • 2017-05-11JS实现HTML标签转义及反转义
  • 2017-05-11js仿小米手机上下滑动效果
  • 2017-05-11Jil,高效的json序列化和反序列化库
  • 2017-05-11详解基于webpack和vue.js搭建开发环境
  • 2017-05-11微信小程序 视图容器组件的详解及实例代码
  • 2017-05-11javascript判断回文数详解及实现代码
  • 2017-05-11微信小程序实战之登录页面制作(5)
  • 2017-05-11jQuery插件扩展操作入门示例
  • 2017-05-11js实现日历与定时器
  • 2017-08-26Math对象常用属性与方法详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • JavaScript两个变量交换值的实现方法
    • JavaScript自动点击链接 防止绕过浏览器访问的方法
    • 原生js实现放大镜效果
    • js函数中的with用法
    • jQuery实现遍历复选框的方法示例
    • 写jQuery插件时的注意点
    • 用jQuery旋转插件jqueryrotate制作转盘抽奖
    • nodejs 终端打印进度条实例代码
    • div 跟着鼠标移动
    • js实现PC端和移动端刮卡效果

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有