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 相关文章推荐
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
使用typeof判断function是否存在于上下文
Aug 14 Javascript
js图片翻书效果代码分享
Aug 20 Javascript
一个php+js实时显示时间问题
Oct 12 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
Sep 29 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
Nov 28 Javascript
Javascript中数组去重与拍平的方法示例
Feb 03 Javascript
Three.js实现浏览器变动时进行自适应的方法
Sep 26 Javascript
JavaScript框架Angular和React深度对比
Nov 20 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
Apr 26 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 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
php array_search() 函数使用
2010/04/13 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
php与js的区别是什么
2013/08/05 Javascript
jquery中get和post的简单实例
2014/02/04 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
Python处理文本换行符实例代码
2018/02/03 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python输出带颜色字体实例方法
2019/09/01 Python
python 实现单通道转3通道
2019/12/03 Python
为什么说python适合写爬虫
2020/06/11 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
详解Anaconda 的安装教程
2020/09/23 Python
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
保护环境倡议书500字
2014/05/19 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
护士2014年终工作总结
2014/11/11 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
2014年科普工作总结
2014/12/06 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
志愿者个人总结
2015/03/03 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书