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 相关文章推荐
showModalDialog 和 showModelessDialog
Jan 22 Javascript
javascript最常用与实用的创建类的代码
Aug 12 Javascript
关于jquery append() html时的小问题的解决方法
Dec 16 Javascript
jquery基础知识第一讲之认识jquery
Mar 17 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
微信小程序中input标签详解及简单实例
May 18 Javascript
React如何将组件渲染到指定DOM节点详解
Sep 08 Javascript
Angular2使用vscode断点调试ts文件的方法
Dec 13 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
Mar 03 Javascript
JavaScript 2018 中即将迎来的新功能
Sep 21 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
Sep 17 Javascript
js面试题之异步问题的深入理解
Sep 20 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
php语法检查的方法总结
2019/01/21 PHP
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
python使用socket连接远程服务器的方法
2015/04/29 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
pandas数据集的端到端处理
2019/02/18 Python
python实现LRU热点缓存及原理
2019/10/29 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
python代码实现猜拳小游戏
2020/11/30 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
六月份红领巾广播稿
2014/02/03 职场文书
旷课检讨书范文
2015/01/27 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书