【问题标题】:How to mask phone number as 123-456-7890?如何将电话号码屏蔽为 123-456-7890?
【发布时间】:2021-01-06 11:18:20
【问题描述】:

在我的数据库中,我的电话号码为 123-456-7890 和 1234567890,有没有办法在我的文本框中格式化显示为 123-456-7890 格式

在我看来,我有电话文本框

 <input asp-for="PhoneNumber" type="tel" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" readonly class="form-control" id="PhoneNumber" placeholder="">

我需要将所有电话号码格式化为123-456-7890

我试过了:

function formatPhoneNumber(txt) {
  if (String(txt)[3] != "-") {
    txt = "" + txt.slice(0, 3) + "-" + txt.slice(3, 6) + "-" + txt.slice(6);
  }
  return txt;
}

在我的文本框中

<input asp-for="PhoneNumber"  type="tel" readonly pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" onchange="formatPhoneNumber(this)" class="form-control fa-mask" id="PhoneNumber" placeholder="">

【问题讨论】:

标签: javascript html asp.net asp.net-core


【解决方案1】:

这里有一个demo,展示了如何绑定111-111-1111格式的模型数据,以及当改变111-111-1111格式的输入时。 控制器:

public IActionResult Index()
        {
            TestReadOnly t = new TestReadOnly { PhoneNumber = "1231231234" };
            return View(t);
        }

查看:

    @model TestReadOnly
@{
    ViewData["Title"] = "Index";
}

<h1>Index</h1>
<input asp-for="PhoneNumber" type="tel" aria-label="Please enter your phone number" placeholder="ex. 111-111-1111" onchange="change()">
@section scripts{ 
    <script type="text/javascript">
        $(function () {
            //bind the data from Model with format 111-111-1111
            let txt = JSON.stringify(@Model.PhoneNumber);
            if (String(txt)[3] != "-") {
                txt = '' + txt.substring(0, 3) + "-" + txt.substring(3, 6) + "-" + txt.substring(6);
            }
            $('[type="tel"]').val(txt); 
        })
    //when change the input value,format 111-111-1111    
    function phoneMask() {
        var num = $(this).val().replace(/\D/g, '');
        $(this).val(num.substring(0, 3) +'-'+  num.substring(3, 6) + '-' + num.substring(6, 10));
    }
    $('[type="tel"]').keyup(phoneMask);
    </script>
}

结果:

【讨论】:

  • 无论如何要在页面加载时替换?
【解决方案2】:

如果要调用该函数,可以在input标签后面写&lt;script&gt;formatPhoneNumber("1234567890")&lt;/script&gt;

请注意,如果您在input 中写入(this),则参数就是元素本身(在本例中为input)。

所以,如果你写(this),只需稍微改变一下函数:

function formatPhoneNumber(el)
{
  let txt = el.value; // add this line
  if (String(txt)[3] != "-")
  {
    txt = '' + txt.slice(0, 3) + "-" + txt.slice(3, 6) + "-" + txt.slice(6);
  }
  //return txt // delete this line
  el.value = txt // add this line instead
}

如果你不通过input调用函数(这意味着你写&lt;script&gt;formatPhoneNumber(parameter)&lt;/script&gt;),参数将是document.getElementById("PhoneNumber")

【讨论】:

  • 谢谢!这是 js 函数,你能告诉我完整的代码如何应用那个电话号码文本框吗?对不起,我是新手 :)
  • 是的,它是一个javascript函数。没有完整的代码,这只是将1234567890 变成123-456-7890 的字符串。如果你想在不同的标签中使用字符串,你应该这样做:document.getElemetById("id_name"),然后是.value.innerHTML(取决于标签),然后是=,然后是字符串
猜你喜欢
  • 1970-01-01
  • 2018-05-04
  • 2012-07-24
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多