JS判断文本框内容改变事件的简单实例


Posted in Javascript onMarch 07, 2014

oninput,onpropertychange,onchange的用法

onchange触发事件必须满足两个条件:

a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效)

b)当前对象失去焦点(onblur);

onpropertychange的话,只要当前对象属性发生改变,都会触发事件,但是它是IE专属的;      

oninput是onpropertychange的非IE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事件,它只在对象value值发生改变时奏效。

停止冒泡事件

if (e) //停止事件冒泡 e.stopPropagation();
else  window.event.cancelBubble = true;

执行上面的代码,单击输入框发现也会触发onpropertychange,输入一个值同样也会触发这个事件,这就证明了,只要有属性的值被修改就会触发该事件。

第二、既然我们发现了这个特点,那就会有一个问题了:当我们有时在输入框值发生改变时希望执行一个函数操作,但同时也要修改一个自定义的属性,这样onpropertychange就会被触发两次,这个可能并不是我们所希望的。
猜想一下,既然提供了这么一个属性,那一定应该能获取到是哪个属性被改变了。试着获取参数个数及参数内容。

XML/HTML代码

<input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">  
<script type="text/javascript">  
<!--   
document.getElementByIdx_x_x('xx').attachEvent('onpropertychange',function(){   
alert(arguments.length);   
for(var i=0;i<arguments.length;i++){   
alert(arguments[i]);   
}   
});   
-->  
</script> 

执行上面一段代码,会发现弹出了1和[object],这说明该事件只给回调函数传入一个参数而且是object类型。
那我们就试试遍历一下这个object。

XML/HTML代码

<input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">  
<script type="text/javascript">  
<!--   
document.getElementByIdx_x_x('xx').attachEvent('onpropertychange',function(o){   
for(var item in o){   
alert(item+":"+o[item]);   
}   
});   
//-->  
</script> 

执行一下,发现有很多个属性,但仔细看我们可能会发现这么一个属性:propertyname,相信每个人都能猜到这个属性的意思了。对,这个就是用来获取哪个属性被修改的。

XML/HTML代码

<input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">  
<script type="text/javascript">  
<!--   
document.getElementByIdx_x_x('xx').attachEvent('onpropertychange',function(o){   
alert(o.propertyName);   
});   
//-->  
</script> 

分别单击文本框和输入一个值,会发现分别弹出了myprop和value。

再回到我们开始的问题,我们只需要判断是否是value被改变就ok了。
直接看代码吧:

XML/HTML代码

<input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">  
<script type="text/javascript">  
<!--   
document.getElementByIdx_x_x('xx').attachEvent('onpropertychange',function(o){   
if(o.propertyName!='value')return;  //不是value改变不执行下面的操作   
//.......函数处理   
});   
//-->  
</script>
Javascript 相关文章推荐
Prototype Array对象 学习
Jul 19 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
Jul 09 Javascript
javascript模拟实现ajax加载框实例
Oct 15 Javascript
Jquery实现由下向上展开效果的例子
Dec 08 Javascript
JavaScript实现移动端滑动选择日期功能
Jun 21 Javascript
原生javascript实现的ajax异步封装功能示例
Nov 03 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
Dec 08 Javascript
jquery实现多次上传同一张图片
Jan 09 Javascript
jquery动态赋值id与动态取id方法示例
Aug 21 jQuery
jQuery实现注册会员时密码强度提示信息功能示例
Sep 05 jQuery
Vue异步组件处理路由组件加载状态的解决方案
Sep 07 Javascript
JavaScript常用工具方法封装
Feb 12 Javascript
使用js判断TextBox控件值改变然后出发事件
Mar 07 #Javascript
jquery1.10给新增元素绑定事件的方法
Mar 06 #Javascript
jquery单行文字向上滚动效果示例
Mar 06 #Javascript
Javscript删除数组中指定元素并返回新数组
Mar 06 #Javascript
在Firefox下js select标签点击无法弹出
Mar 06 #Javascript
jquery选择器大全 全面详解jquery选择器
Mar 06 #Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
Mar 06 #Javascript
You might like
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
详解jQuery中的事件
2016/12/14 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
python组合无重复三位数的实例
2018/11/13 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
Shell编程面试题
2012/05/30 面试题
计算机工程学院个人求职信
2013/10/05 职场文书
小学领导班子对照材料
2014/08/23 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技