2013-05-10 177 views
4

在我正在開發的一個項目中,我有一個用戶必須輸入姓名的文本框。爲了避免用戶輸入數字,我使用Brian Jaeger編寫的jquery.limitkeypress.js庫,並且在IE 10中測試網站之前,每件事情都很完美。在IE10中,您可以輸入所需的所有字母,並且不能輸入數字或奇怪的符號就像我想要的一樣,但是當我輸入一個空格然後輸入一個字母時,我看到字母正好印在空格上,然後空格消失,後者向左移動。奇怪的是,如果我在輸入空格鍵入字母后等待30秒,它可以正常工作。我遇到了limitkeypress.js和IE10的問題

回答

5

jquery.limitkeypress.js與ie有一些問題,我建議您使用更強大的庫。

http://github.com/RobinHerbots/jquery.inputmask

有了這個庫,你可以使用這樣的事情:

$(".numbers").inputmask('Regex', { 
    mask: "9", 
    repeat: 11, 
    placeholder: "" 
}); 

它完美的IE瀏覽器。 :)

+1

非常感謝,它工作得很好 – 2013-07-18 17:52:08

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 
} 
+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/11499102) – Magisch 2016-03-04 08:13:16

+0

-更新的答案 – Jaeger 2016-03-04 16:50:47