前言
在实际写代码的过程中 我们会发现 ie9有input事件
但是当我们删除内容的时候并没有触发 oninput事件
这是由于ie9不兼容这个事件
解决方案
ie9支持 keydown 和 keyup 事件
根据这个我们可以监听 delete键的keyup事件 并且作为触发器绑定到oninput事件
代码
function BrowserType() {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
var isEdge = (userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 || userAgent.indexOf("Windows NT 6.1; WOW64; Trident/7.0;")) && !isIE; //判断是否IE的Edge浏览器
var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器
if (isIE) {
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if (fIEVersion == 7) {
return "IE7";
} else if (fIEVersion == 8) {
return "IE8";
} else if (fIEVersion == 9) {
return "IE9";
} else if (fIEVersion == 10) {
return "IE10";
} else if (fIEVersion == 11) {
return "IE11";
} else {
return "0"
}//IE版本过低
}//isIE end
if (isFF) {
return "FF";
}
if (isOpera) {
return "Opera";
}
if (isSafari) {
return "Safari";
}
if (isChrome) {
return "Chrome";
}
if (isEdge) {
return "Edge";
}
}
var myBrowser = BrowserType();
console.info("myBrowser:" + myBrowser)
//TODO ie9兼容性问题
if (myBrowser == "IE9") {
$('input').each(
function () {
var that = $(this);
that.on("keyup", function (e) {
if (e.keyCode === 8) {
console.log(e.keyCode);
that.trigger("input")
}
}
})
}
);
}