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 相关文章推荐
Jquery在IE7下无法使用 $.ajax解决方法
Nov 11 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
Sep 29 Javascript
多个js与css文件的合并方法详细说明
Dec 26 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
jQuery实现ichat在线客服插件
Dec 29 Javascript
原生javascript实现图片弹窗交互效果
Jan 12 Javascript
老生常谈jacascript DOM节点获取
Apr 17 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
javascript 中select框触发事件过程的分析
Aug 01 Javascript
基于jQuery实现定位导航位置效果
Nov 15 jQuery
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 Javascript
Layui实现数据表格默认全部显示(不要分页)
Oct 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+MySql编写聊天室
2006/10/09 PHP
PHP多个版本的分析解释
2011/07/21 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
Vue程序调试的方法
2019/06/17 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
python保存数据到本地文件的方法
2018/06/23 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
python datetime中strptime用法详解
2019/08/29 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
高中生逃课检讨书
2014/10/10 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书