当前位置: 首页 > 知识库问答 >
问题:

在AngularJS中使用ng-pattern验证的已验证的屏蔽美国电话号码,如果输入的数字太多,如何防止其失效

谭翰海
2023-03-14

我试图找出一种方法来验证一个输入,该输入被屏蔽以将基于我们的电话号码显示为(###)###-####我尝试了几种方法,我发现最接近的方法是使用

<form name="phone_form" novalidate>
    <input name="phone" class="phone_us" type="tel" ng-model="phone" placeholder="(555) 555-1212" ng-pattern="/^\(?(\d{3})\)?[ .-]?(\d{3})[ .-]?(\d{4})$/" />
    <span style="color:red" ng-show="phone_form.phone.$error.pattern">Invalid Phone Number</span>
</form>

我从-Angularjs dynamic ng-pattern validation中提取了regex,这成功地验证了输入并匹配了用例,它甚至抛出了正确的错误并显示了正确的消息。然而,一旦您输入超过电话号码10位数的任何数字,就会触发错误,输入再次无效。如果我退格一个数字并再次添加一个数字,那么只要我不添加更多数字,输入就会再次验证。该字段是屏蔽的,因此您不能在显示的电话号码之外看到任何额外的数字,即使您试图输入超过有效电话号码10位的数字,您要成功地重新验证表单所需做的就是退格一位并再次输入。

我现在的位置可以在这里找到:

http://plnkr.co/edit/ln7scilspnljrzda0p2n?p=preview

共有1个答案

华心思
2023-03-14

我建议您使用ngMask模块。看看下面的使用有多简单:

angular.module('app', ['ngMask'])
 .controller('mainCtrl', function($scope) {
   
 });
<html ng-app="app">

<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/ngMask/3.1.1/ngMask.min.js"></script>
</head>

<body ng-controller="mainCtrl">
  <form name="phone_form" novalidate>
    <input type="text" name="text" class="phone_us" ng-model="phone" placeholder="(555) 555-1212" mask="(999) 999-9999" restrict="reject">
  </form>
</body>

</html>
 类似资料:
  • 问题内容: 编辑: 我已经混合并修改了下面给出的两个答案,以形成完整的功能,它现在可以完成我想要的,然后执行某些操作…所以我想我将它张贴在这里,以防其他任何人寻找相同的内容事情。 问题答案: 您可以使用先行断言来解决此问题。基本上,我们要说的是我想要一系列特定的字母(例如,ex,ext,x,extension),然后是一个或多个数字。但我们也想涵盖根本没有扩展的情况。 旁注,您不需要在诸如[\ s

  • 问题内容: 我正在尝试使用ng-pattern指令验证angularJs中的Email id字段。 但是对AngularJs来说是新手。用户输入错误的电子邮件ID后,我需要立即显示错误消息。 我下面的代码正在尝试解决。使用ng-pattern帮助我获得正确的结果。 问题答案: 如果要验证电子邮件,请使用type =“ email”而不是type =“ text”的输入。AngularJS具有开箱即

  • 但我对Angularjs是新的。我需要显示一个错误消息,一旦用户输入错误的电子邮件ID。 我下面的代码是试图解决的。帮助我使用ng-pattern得到正确的结果。

  • 我有一个程序,读取用户输入的电话号码,并返回国家代码(如果存在)、区号(如果存在)和本地7位电话号码 号码必须输入为countrycode area local。所以,电话号码中最多可以有两个虚线。 例如: 1-800-5555678有两个破折号(有国家代码和区号) 800-5555678有一个破折号(只有区号) 5555678没有破折号(只有本地号码) 所以,零破折号、一破折号或两破折号都可以,

  • 我目前使用phonenumbers包作为我的Django的UserCreationForm的电话号码字段的验证方法。在我当前的代码中,我使用get方法从其字段中检索电话号码,然后进行验证。如果输入的数字不存在,将弹出一个表单错误,并声明该数字不是一个国家的格式(在本例中,我使用的是新加坡)。请告诉我应该对我当前的代码做什么修改。 我希望输出验证phone字段中输入的电话号码,没有国家代码,只有8位