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:""});
});