某天突然一個人在群里問,如何實現input輸入11位就不讓繼續輸入了,群里大神各顯神通,紛紛提出解決辦法:
1:input加個屬性maxLength=“11”,完美!
2:$("#id").keyup(function(event){
var a=$("#id").val();
if(a.length>num){
$(id).val($("#id").val().substr(0,11));
}
});
其實這兩個方法都挺好的,但是有點不足之處就是第一個在低版本ie下表現不理想。第二個當輸入11位以上,會出現輸入后
先輸入上然后又變沒了的很奇怪效果,雖然目的達到了,但是說好的不讓輸入的呢?而且如果是你用鼠標復制粘貼的話,你獲取的a的
值是之前輸入的,所以會出問題,各位可以試試;
解決第二個問題的難點在於,你獲取不到你粘貼過來的值的length,所以你無法判斷,於是我們想到了propertychange,無論是
粘貼復制,還是直接輸入,表現都與maxLength效果一致!於是我封裝了jq的寫法:
function promiseNum(id,num){
$(id).bind("input propertychange", function() {
var a=$(id).val();
if(a.length>num){
$(id).val($(id).val().substr(0,num));
}
});
}
只要傳入input對應的id和你要限制的位數就可以了,完美~~~,有不足的地方,歡迎各位大神指點~~~