在自动完成电话号码中添加破折号

Posted

技术标签:

【中文标题】在自动完成电话号码中添加破折号【英文标题】:Add dash in auto complete phone number 【发布时间】:2015-09-29 21:29:13 【问题描述】:

问题:

是否可以在自动补全中自动添加破折号“-”?

假设我有一个电话号码字段,如果有人在其中输入他们的电话号码,浏览器自动完成将显示。

例如。

这是浏览器自动完成值 1234567890

一旦他们选择我想自动将其格式化为这个

123-456-7890

因为有些网站在他们的电话字段中没有验证格式,您可以连续输入 10 位数字,一旦您在浏览器缓存中输入,它也会显示到其他电话字段中。

提前致谢。

【问题讨论】:

见this answer我写的..有两个例子。不需要 jQuery。 【参考方案1】:
$('#phone-number-field').keyup(function()
    $(this).val($(this).val().replace(/(\d3)\-?(\d3)\-?(\d4)/,'$1-$2-$3'))
);

【讨论】:

【参考方案2】:

你可以试试这个代码。

$(function () 

    $('#txtnumber').keydown(function (e) 
       var key = e.charCode || e.keyCode || 0;
       $text = $(this); 
       if (key !== 8 && key !== 9) 
           if ($text.val().length === 3) 
               $text.val($text.val() + '-');
           
           if ($text.val().length === 7) 
               $text.val($text.val() + '-');
           

       

       return (key == 8 || key == 9 || key == 46 || (key >= 48 && key <= 57) || (key >= 96 && key <= 105));
   )
);

html 输入

<input id="txtnumber"   type="text" maxlength="12" placeholder="xxx-xxx-xxxx" />

在jsfiddle中也可以看到

https://jsfiddle.net/karthikjsf/38vdpj4f/

【讨论】:

【参考方案3】:

上面的答案很好,但是我在复制粘贴时遇到了一些问题,即输入其他字符而不是数字,所以我使用了:

  $('#help_number').keyup(function()
    $(this).val($(this).val().match(/\d+/g).join("").replace(/(\d3)\-?(\d3)\-?(\d4)/,'$1-$2-$3'))
  );

例子:

str="34%^gd 5-67 6-6ds897"

str.match(/\d+/g).join("")

输出为:>>“3456766897”

str.match(/\d+/g).join("").replace(/(\d3)\-?(\d3)\-?(\d4)/,'$1-$2-$3')

输出是:345-676-6897

【讨论】:

除非他们先输入一个或多个非数字会发生什么?

以上是关于在自动完成电话号码中添加破折号的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1694. 重新格式化电话号码

在 WooCommerce 结帐时格式化帐单电话号码

使用带有联系人电话号码的自动完成文本视图

与本机短信应用程序 Android 中的名称和号码自动完成

每日一练<1>

每日一练<1>