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编程开发中的五个实用小技巧
Jul 22 Javascript
js 获取计算后的样式写法及注意事项
Feb 25 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
js代码实现无缝滚动(文字和图片)
Aug 20 Javascript
基于JavaScript实现生成名片、链接等二维码
Sep 20 Javascript
Javascript实现的SHA-256加密算法完整实例
Feb 02 Javascript
jQuery点击头像上传并预览图片
Feb 23 Javascript
jQuery实现文章图片弹出放大效果
Apr 06 jQuery
js获取form表单中name属性的值
Feb 27 Javascript
微信小程序结合Storage实现搜索历史效果
May 18 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
Sep 22 Javascript
原生Javascript+HTML5一步步实现拖拽排序
Jun 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
php5.2时间相差8小时
2007/01/15 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
微信小程序用canvas画图并分享
2020/03/09 Javascript
python搭建虚拟环境的步骤详解
2016/09/27 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
pytorch简介
2020/11/11 Python
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
业务主管岗位职责
2013/11/20 职场文书
日语专业个人的求职信
2013/12/03 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
质量月活动策划方案
2014/03/10 职场文书
加油口号大全
2014/06/13 职场文书
生活小常识广播稿
2014/09/16 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
保证书格式
2015/01/16 职场文书
学校少先队工作总结
2015/08/12 职场文书