目前我正在使用jquery.maskedinput进行严格的掩码格式,但它不适用于电话号码。
在巴西,我们过去的所有数字都是格式(99)9999-9999。但最近,在一些城市,手机正在使用(99)99999-9999,而普通手机和其他国家仍在使用(99)9999-9999。
jquery.maskedinput似乎不支持同一输入上的2种格式,其中字符串中间的字符可能存在也可能不存在。正如我在其文档中看到的那样,我可能有(99)9999-9999和(99)9999-99999,但这会让用户感到困惑。
是否有其他掩码插件/框架允许我验证(99)9999-9999和(99)99999-9999?
编辑:我使用harry和Dmitrii解决方案创建了一个完整的测试:http://jsfiddle.net/NSd6g/ $('#full').inputmask('(99)9999[9]-9999');
我会再等一下,看看能不能找到更好的解决方案。完美的一个不需要红色消息,第二个组默认有4个数字。而且,如果第三组获得第五位数,那么第二组将获得第五位数,将第三组的第一位数移至第二组第五位。大声笑有点难以理解,对不起!
答案 0 :(得分:5)
您可以使用jquery.inputmask完成此操作,只需:
jQuery(function($) {
$('#test').inputmask('(99)9999[9]-9999');
});
试试这个demo。
要在键入输入时跳过可选部分,您需要键入空格或掩码中可选部分后面的字符(在本例中为连字符)。
答案 1 :(得分:1)
使用jQuery掩码,您只能将尾随字符设置为可选。不是输入中间的那些。
我的建议是有3个输入框,每个输入框一个,中间输入末尾有可选字符。然后在提交时连接输入。
像这样: (<input id="phone2" />)<input id="phone3" />-<input id="phone4" />
jQuery(function($){
$("#phone2").mask("99");
$("#phone3").mask("9999?9");
$("#phone4").mask("9999");
});
请参阅小提琴:http://jsfiddle.net/Rge83/1/
为了使用户更友好,可以添加一个脚本,以便在填充当前输入后移动到下一个输入+一些css,使输入看起来更像是一个。
答案 2 :(得分:1)
我也是巴西人。
在我的工作中,我们实际上并没有在中间使用“ - ”字符来表示这些类型的面具,所以没有混淆......最后的面具将是以下内容:(99)99999999?9
最终用户通过这种方式识别错误输入的电话号码有点困难,但它确实有用。
我知道的另一种方法是在JS中构建正则表达式,然后将其与另一个插件一起使用,例如jQuery Validate。
答案 3 :(得分:1)
我的建议:&#34;(99)[9] 9999-9999&#34;
答案 4 :(得分:0)
//Configuração para celular com nono digito
$('#Seletor').focusout(function () {
var phone, element;
element = $(this);
element.unmask();
phone = element.val().replace(/\D/g, '');
if (phone.length > 10) {
element.mask("(99) 99999-999?9");
} else {
element.mask("(99) 9999-9999?9");
}
}).trigger('focusout');