oninput、onchange以及onpropertychange还有定时器监听input输入框值的改变
oninput事件是HTML5之后新加的事件,主要作用是当input输入框的输入的值改变,也就是input输入框的value值改变的时候触发的事件,有且仅有value值改变的时候才能触发,而且是当用户在页面输入值时候,使得value值改变的时候,通过js改变value值的时候是无法触发这个事件的。
1、onchange事件与onpropertychange事件的区别:
onchange事件在内容改变(两次内容有可能还是相等的)且失去焦点时触发;onpropertychange事件却是实时触发,即每增加或删除一个字符就会触发,通过js改变也会触发该事件,但是该事件IE专有。
2、oninput事件与onpropertychange事件的区别:
oninput事件是IE之外的大多数浏览器支持的事件,在value改变时触发,实时的,即每增加或删除一个字符就会触发,然而通过js改变 value时,却不会触发;onpropertychange事件是任何属性改变都会触发的,而oninput却只在value改变时触发,oninput要通过addEventListener()来注册,onpropertychange注册方式跟一般事件一样。(此处都是指在js中动态绑定事件,以实现内容与行为分离)
3、oninput与onpropertychange失效的情况:
(1)oninput事件:a). 当脚本中改变value时,不会触发;b). 从浏览器的自动下拉提示中选取时,不会触发。
(2)onpropertychange事件:当input设置为disable=true后,onpropertychange不会触发。
前三个对象事件,这里也不想说,明白了其如何触发该事件,然后基本就可以使用了,这里想说的是一种特殊的情况,就是当输入框input是readonly状态,用户无法修改的时候,但是通过js改变输入框的value值时候,仍然需要进行操作的时候,该如何触发后续操作:
$(document).ready(function (){
if($.browser.msie){
//IE浏览器
$("#id").propertychange = function (){}或者是方法名;
}else{
//其他浏览器
var intervalName; // 定时器句柄
$("#id").click(function (){//启动定时器 只要是启动定时器就可以,不一定是click方法
intervalName = setInterval(function(){}或者是方法名,1000);
})
$("#id").click(function (){//结束定时器 只要是结束定时器就可以,不一定是click方法
clearInterval(intervalName);
})
}
})
这也是参考网上的一些方法,我感觉这种方法也是实在没有办法的办法,可能是我刚刚接触,没有深入的学习js,我甚至都不知道回调函数,不知道js方法也可以传递方法名当做参数,js好复杂,想搞懂实在不容易,慢慢学习吧。

浙公网安备 33010602011771号