在一个输入框内
<input type="text" placeholder="手机号码" class="bode" id="tel" maxlength="11">当输入手机号码时,自动变成3-4-4格式,例如:136 6666 6666,在长度为3和8后面添加一个空格,自己试着写了下,
var tel_len = this.value.length;
if (tel_len ===3 || tel_len ===8) {
this.value += " ";
}
获取其值的长度,然后在长度为3和8后面添加一个空格,但是感觉行不通,bug太多,删除起来有停顿,而且是移动端根本没法删除,园里的大神多,希望有朋友能帮忙解决下问题,万分感谢,附上例子或者原码进行参考就更好了。
// 手机号码3-4-4格式
$(function(){
$('#tel').bind('input propertychange',function(){
$(document).keydown(function(event){
if(event.keyCode==8){
return;
}if($('#tel').val().length == 3 || $('#tel').val().length == 8){
var phone = $('#tel').val()+" ";
$('#tel').val(phone);
}
})
});
function emptyAll(str,global){
var telre;
telre = str.replace(/(^\s+)|(\s+$)/g,"");
if(global.toLowerCase() == "g"){
telre = telre.replace(/\s/g,"");
}
return telre;
};
emptyAll($('#tel').val(),"g");
});
已解决,谢谢大家,在网上找到一个答案,测试了可以使用,谢谢园里回答问题的朋友,我都不知道怎么分配这个园豆了
全给我就好了:)
正则匹配可以么:
reg=/([0-9]{0,3})([0-9]{0,4})?([0-9]+)?/;
$('.bode').val(reg.exec($('.bode').val()).splice(1).join(' '))
哥们,这个好像行不通,谢谢
<input type="text" placeholder="手机号码" maxlength="13" onkeydown="if(event.keyCode==8){return;}if(value.length==3||value.length==8){value+=' '}"/>
大兄弟,你这个差不多实现了,就是输入最后四位数字的时候会出现问题,倒数第四个数字会跑到倒数第一位
@痞子Geeking: http://jsbin.com/yusokajiwu/edit?html,output
你确定,不应该出现这种问题吧!
@刘宏玺: 是的,我在手机UC浏览器上测试就出现这种情况,PC上是没问题
2楼正解,亲测是可以的
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<input type="text" class="bode"/>
</body>
<script src="jquery-1.11.3.min.js"></script>
<script>
$(".bode").on("keyup",function(){
var $val=$(".bode").val();
//if($val.length>2 && $val.length<4 || $val.length>7 && $val.length<9){
if($val.length == 3 || $val.length == 8){
$val=$val+" ";
}
$(".bode").val($val);
})
</script>
</html>
以上两种判断均可实现
<div id="win"> <p><label>手机号码:</label><input type="text" id="test" maxlength="13" value="" onkeyup="doSet(this)"></p> </div> <script type="text/javascript"> function doSet(dom) { var phone = dom.value; var pLength = phone.length; if(pLength > 3) { phone = phone.replace(/\s*/g, ""); if(phone.length > 7) { phone = phone.replace(/^(...)(....)/g, "$1 $2 "); } else if(phone.length > 3) { phone = phone.replace(/^(...)/g, "$1 "); } } dom.value = phone; } </script>
你还得考虑粘贴吧?!所以,这样才合理。^_^
// input keyup var num = $("#tel").val(); if (num.charAt(num.length - 1) != " ") { var arr = $("#tel").val().replace(" ", "").split(""); if (arr.length > 3 && arr[3] != " ") { arr.splice(3, 0, " "); } if (arr.length > 8 && arr[8] != " ") { arr.splice(8, 0, " "); } num = arr.join(""); } else { num = num.substr(0, num.length - 1); } $("#tel").val(num);