1

目前我正在将 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 位。并且,如果第三组将获得第五个数字,那么只有第二组将获得其第五个空格,将第三组的第一个数字移动到第二组的第五个数字。大声笑有点难以理解,对不起!

4

5 回答 5

5

您可以使用jquery.inputmask来实现这一点,如下所示:

jQuery(function($) {
    $('#test').inputmask('(99)9999[9]-9999');
});

试试这个演示

要在输入时跳过可选部分,您需要在掩码中的可选部分后面输入空格或字符(在这种情况下为连字符)。

于 2013-02-18T15:01:04.220 回答
2

我也是巴西人。

在我的工作中,我们实际上并没有在中间使用“-”字符来表示这些类型的掩码,所以没有混淆......最终的掩码如下:(99)99999999?9

最终用户以这种方式识别错误输入的电话号码有点困难,但它确实有效。

我知道的另一种方法是在 JS 中构建正则表达式,然后将它与另一个插件一起使用,例如jQuery Validate

于 2013-02-18T14:54:18.150 回答
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 以使输入看起来更像一个。

于 2013-02-18T14:53:49.997 回答
1

我的建议:“(99) [9] 9999-9999”

于 2016-06-03T19:22:39.697 回答
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');
于 2013-09-25T17:34:00.717 回答