在我正在进行的一个项目中,我有一个文本框,用户必须在其中输入他的名字。为了避免用户输入数字,我使用了 Brian Jaeger编写的jquery.limitkeypress.js库,在我在 Internet Explorer 10 中测试该网站之前,一切都运行良好。在 IE10 中,你可以输入所有你想要的字母,然后你无法按我的意愿输入数字或奇怪的符号,但是当我输入一个空格然后输入一个字母时,我看到字母打印到空格,然后空格消失,后者向左移动。奇怪的是,如果我在输入空格后等待 30 秒来输入字母,它就可以正常工作。
问问题
775 次
2 回答
4
jquery.limitkeypress.js 与 ie 有一些问题,我建议你使用更强大的库。
http://github.com/RobinHerbots/jquery.inputmask
有了这个库,你可以使用这样的东西:
$(".numbers").inputmask('Regex', {
mask: "9",
repeat: 11,
placeholder: ""
});
它在 ie 上完美运行。:)
于 2013-07-18T17:49:47.217 回答
1
对不起,我已经几年没有更新那个插件了,但是......
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
}
于 2016-03-03T22:18:17.473 回答