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 相关文章推荐
JS字符串拼接在ie中都报错的解决方法
Mar 27 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
Sep 06 Javascript
Node.js实用代码段之正确拼接Buffer
Mar 17 Javascript
jQuery判断checkbox选中状态
May 12 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
TypeScript入门-基本数据类型
Mar 28 Javascript
微信小程序 图片宽度自适应的实现
Apr 06 Javascript
bootstrap fileinput插件实现预览上传照片功能
Jan 23 Javascript
vue项目上传Github预览的实现示例
Nov 06 Javascript
koa2的中间件功能及应用示例
Mar 05 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
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
php 静态变量的初始化
2009/11/15 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
php随机输出名人名言的代码
2012/10/07 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
jquery 页面全选框实践代码
2010/04/02 Javascript
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
2010/06/07 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python的re模块应用实例
2014/09/26 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
生产车间主管岗位职责
2013/12/28 职场文书
《藏戏》教学反思
2014/02/11 职场文书
军训感想500字
2014/02/20 职场文书
办公室主任岗位职责
2015/01/31 职场文书
员工规章制度范本
2015/08/07 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android