某天突然一个人在群里问,如何实现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和你要限制的位数就可以了,完美~~~,有不足的地方,欢迎各位大神指点~~~