我遇到了limitkeypress.js和IE10的问题
问题描述:
在我正在开发的一个项目中,我有一个用户必须输入姓名的文本框。为了避免用户输入数字,我使用Brian Jaeger编写的jquery.limitkeypress.js库,并且在IE 10中测试网站之前,每件事情都很完美。在IE10中,您可以输入所需的所有字母,并且不能输入数字或奇怪的符号就像我想要的一样,但是当我输入一个空格然后输入一个字母时,我看到字母正好印在空格上,然后空格消失,后者向左移动。奇怪的是,如果我在输入空格键入字母后等待30秒,它可以正常工作。我遇到了limitkeypress.js和IE10的问题
答
jquery.limitkeypress.js与ie有一些问题,我建议您使用更强大的库。
http://github.com/RobinHerbots/jquery.inputmask
有了这个库,你可以使用这样的事情:
$(".numbers").inputmask('Regex', {
mask: "9",
repeat: 11,
placeholder: ""
});
它完美的IE浏览器。 :)
答
对不起,我没有更新的插件,在短短几年内,但...
jquery.limitkeypress现在与IE9 +存在这样的问题与选择是如何确定的。
IE11杀死他们document.selection支持,但他们一直我使用来测试正在使用什么浏览器,在document.setSelectionRange ...
IE9启用document.selectionStart和document.selectionEnd,所以我现在检查直接的浏览器IE人民的版本使用...
我添加了这个检查IE版本:
var ie = (function(){
var undef,
v = 3,
div = document.createElement('div'),
all = div.getElementsByTagName('i');
while (
div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
all[0]
);
return v > 4 ? v : undef;
}());
所以我的选择功能,现在这个样子:
function getSelectionStart(o) {
if (ie < 9) {
var r = document.selection.createRange().duplicate()
r.moveEnd('character', o.value.length)
if (r.text == '') return o.value.length
return o.value.lastIndexOf(r.text)
} else return o.selectionStart
}
function getSelectionEnd(o) {
if (ie < 9) {
var r = document.selection.createRange().duplicate()
r.moveStart('character', -o.value.length)
return r.text.length
} else return o.selectionEnd
}
非常感谢,它工作得很好 – 2013-07-18 17:52:08