需要显示有关手机的验证错误消息

时间:2016-10-31 06:03:32

标签: javascript html css angularjs

我需要在以下条件下显示有关手机号码的错误消息: a)它应包含10位数字。 b)它不应该以0或1开头。 c)所有10位数字不应相同。例如:"(222)-2222-222"

下面是html和js代码。

<label>Work Phone</label>
                                    <input id="" type="text" ui-mask="(999) 999-9999" name="workPhone"
                                           class="form-control"
                                           tabindex="16"
                                           ng-model="patientIn.addressList[0].phoneNumbers['work']"
                                           ng-change="setPhoneNumber('work')"
                                           ui-mask-placeholder-char="space"
                                           model-view-value="true"/>
                                    <p ng-show="(frmPatientEdit.$submitted && frmPatientEdit.workPhone.$invalid) || (frmPatientEdit.workPhone.$invalid && frmPatientEdit.workPhone.$touched)"
                                       class="error">Work Phone is Invalid.</p>

JS代码:

 $scope.setPhoneNumber = function (type) {

            if (typeof $scope.patientIn.addressList[0].phoneNumbers[type] !== "undefined" && $scope.patientIn.addressList[0].phoneNumbers[type] !== "") {

                var obj = $scope.patientIn.addressList[0].phoneNumbers.filter(function (item) {
                    return item.type === type;
                });

                var index = $scope.patientIn.addressList[0].phoneNumbers.indexOf(obj[0]);

                if (index > -1) {

                    $scope.patientIn.addressList[0].phoneNumbers[index].number = $scope.patientIn.addressList[0].phoneNumbers[type];

                } else {
                    //console.log('Adding number: ', $scope.patientIn.addressList[0].phoneNumbers[type], type);
                    $scope.patientIn.addressList[0].phoneNumbers.push({"type": type, "number": $scope.patientIn.addressList[0].phoneNumbers[type]});

                }
            }



        };

2 个答案:

答案 0 :(得分:1)

试试这个会起作用:

Html:

<ng-form name="myForm" ng-controller="mainCtrl">
    <div>Phone No :</div>
    <div>
      <input type="text" placeholder="9101234567" name="phone" minlength="10" maxlength="10" ng-pattern="phoneNumbr" ng-model="phone"/>
      <span class="error" ng-show="myForm.phone.$error.minlength">Phone no not less that 10 char.</span>
      <span class="error" ng-show="myForm.phone.$error.maxlength">Phone no not more than 10 char.</span>
      <br><span class="error" ng-show="myForm.phone.$error.pattern">Please match pattern [9101234567]</span>
    </div>
  </ng-form>

脚本:

var app = angular.module('myApp', []);

app.controller('mainCtrl', function($scope) {
  $scope.phoneNumbr = /^([2-9])(?!\1+$)\d{9}$/;
});

此处,10个数字1中的第一个位置2-9消耗,然后接下来的9个数字可以来自0-9

需求履行:

a)它应包含10位数字。 - 已实现

b)不应以0或1开头。已实现

c)所有10位数字不应相同。 - 已实现

工作小提琴: https://jsfiddle.net/rohitjindal/p0rcwon2/

感谢。

答案 1 :(得分:0)

一种方法是使用正则表达式和JavaScript的组合。

正则表达式将负责:

  1. 不应以0或1
  2. 开头
  3. 应包含10位数字
  4. JavaScript代码将负责:

    1. 所有10位数字不应相同
    2. 这是功能:

      function validatePhone(p){
      
          p = ''+p; //convert it to a string
      
          var regex = /^[2-9]\d{9}$/;
      
          return regex.test(Number(p)) && p.split('').reverse().join('') !== p
      }