Jquery中的自动格式化电话号码

我有一个电话号码文本框。 我的电话号码应该是XXX-XXX-XXX,就像这种格式一样。

我得到了XXX-XXX-XXX格式的解决方案,但我不知道如何修改该代码。

$('#ssn').keyup(function() { var val = this.value.replace(/\D/g, ''); var newVal = ''; while (val.length > 3) { newVal += val.substr(0, 3) + '-'; val = val.substr(3); } newVal += val; this.value = newVal; }); 

http://jsfiddle.net/ssthil/nY2QT/

既然你正在使用jQuery,你可以试试jquery masked-input-plugin 。

这里有一个jsFiddle,你可以看到它是如何工作的。

可以在此处找到GitHub上项目的源代码。

实现不仅仅是简单:

HTML:

  

JavaScript的:

 $("#ssn").mask("999-999-999"); 

更新

在这里可以找到另一个好的。

据我所知,你真正需要做的就是:

 $('#ssn').keyup(function() { this.value = this.value.replace(/(\d{3})\-?/g,'$1-'); }); 

但这只会在人们输入数字时起作用,所以我建议引入一个额外的检查:

 $('#ssn').keyup(function(e) { if ((e.keyCode > 47 && e.keyCode < 58) || (e.keyCode < 106 && e.keyCode > 95)) { this.value = this.value.replace(/(\d{3})\-?/g, '$1-'); return true; } //remove all chars, except dash and digits this.value = this.value.replace(/[^\-0-9]/g, ''); }); 
   

我在google搜索Javascript中自动格式化电话号码的方法时发现了这个问题。 接受的答案并不适合我的需求,自最初发布以来的6年中发生了很多。 我最终找到了解决方案,并在此为后代记录。

问题

我希望我的电话号码html输入字段能够在用户输入时自动格式化(屏蔽)该值。

查看Cleave.js 。 它是解决此问题的非常强大/灵活且简单的方法,以及许多其他数据屏蔽问题。

格式化电话号码非常简单:

 var cleave = new Cleave('.input-element', { phone: true, phoneRegionCode: 'US' }); 
 $('#ssn').keyup(function() { var val = this.value.replace(/\D/g, ''); var newVal = ''; for(i=0;i<2;i++){ if (val.length > 3) { newVal += val.substr(0, 3) + '-'; val = val.substr(3); } } newVal += val; this.value = newVal; }); 
   

您可以通过3个简单步骤在任何字段上设置输入掩码:

1:首先调用这些库http://code.jquery.com/jquery-1.7.2.min.js“”https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1 /jquery.maskedinput.js “

2:创建这样的简单表单:

 

3:然后脚本代码进入你的脚本标签..

$(document).ready(function($){

 $('#phone').mask("99999-9999999-9",{placeholder:""}); 

});