主流浏览器包括firefox、chrome以及ie高版本都支持oninput方法监听文本框变化,此外ie有自己的监听方法:onpropertychange方法。根据这些我们就可以做兼容各种浏览器的文本框监听方法:
var inputArea=document.getElementById('myInput');
if(window.addEventListener){
inputArea.addEventListener("input",fn,false)
}else{
inputArea.attachEvent("onpropertychange",fn);
}
实际情况下我们操作输入框文字有很多种方式:用户输入、退格、删除、剪切、粘贴及鼠标剪切与粘贴时都是改变输入框内容。而在ie9中只有在输入粘贴以及鼠标粘贴时触发,
于是我们要针对ie9也要做兼容。
if(window.VBArray && window.addEventListener) { //IE9
inputArea.attachEvent("onkeydown", function() {
var key = window.event.keyCode;
(key == 8 || key == 46) && fn();//键盘backspace与delete
});
inputArea.attachEvent("oncut", fn);//剪切
inputArea.attachEvent('oncopy',fn);复制
}