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 三种不同位置代码的写法
Oct 25 Javascript
js星星评分效果
Jul 24 Javascript
JavaScript结合AJAX_stream实现流式显示
Jan 08 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
Jan 12 Javascript
JS轮播图中缓动函数的封装
Nov 25 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
Dec 06 jQuery
vue实现个人信息查看和密码修改功能
May 06 Javascript
浅谈webpack 构建性能优化策略小结
Jun 13 Javascript
在vue项目中,将juery设置为全局变量的方法
Sep 25 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
Feb 03 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
给多个地址发邮件的类
2006/10/09 PHP
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
使用Python实现音频双通道分离
2020/12/25 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
初入社会应届生求职信
2013/11/18 职场文书
会计专业的自荐信
2013/12/12 职场文书
自荐书模板
2013/12/15 职场文书
优秀部门获奖感言
2014/02/14 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
出纳工作检讨书
2014/10/18 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
财产保全担保书
2015/01/20 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
MySQL限制查询和数据排序介绍
2022/03/25 MySQL
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python