空和模式的角度电子邮件验证

时间:2018-02-06 08:52:33

标签: javascript angularjs

我正在评估电子邮件输入是否为空或是否为正确的模式。如果是这样,则emailError的值为true,并且进一步的代码不会执行

if(typeof($rootScope.email) === 'undefined' || /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test($scope.email)){
        $scope.emailError = true;
    }

它评估空输入,但没有正确检查模式。 我哪里出错了?

编辑: html部分看起来像这样:

<input ng-class="{true:'error-bron', false:'nonerror-bron'}[emailError===true]" ng-if="$root.lang ==='en'" type="email" maxlength="40"  required class="bron-input" placeholder="Email" ng-model="$root.email"/>

之后,如果所有字段都有效,它将进入功能:

if(!$scope.nameError && !$scope.emailError && !$scope.phoneError){

如果我将模式验证放在html中,那么它会在第一次检查时没问题,但是在提交表单并且用户决定再次打开弹出后,这些值最初是有效的,用户甚至可以发送一个空电子邮件。因此,为什么我喜欢在用户按下提交按钮时执行的此功能中检查它。

2 个答案:

答案 0 :(得分:1)

或许这样做:

if(typeof($rootScope.email) === 'undefined' || !(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test($scope.email))){
        $scope.emailError = true;
}

答案 1 :(得分:0)

试试这个: -

<input type="email" name="email" ng-model="email" ng-maxlength="100" ng-model-options="{ updateOn: blur }" ng-pattern = '/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i' required />