【问题标题】:Email Blacklist and verification电子邮件黑名单和验证
【发布时间】:2025-12-10 13:35:01
【问题描述】:

我是 Angular 的新手,我尝试进行简单的黑名单检查。目前我有两个文本可以用 ng-show 显示和隐藏。第一个应该在邮件模式错误时显示,在正确和/或在黑名单上时隐藏。

我的问题是我不知道该模型必须如何实现。目前它是由一个复选框模拟的。也许有人有提示。

<div class="controls">
  <input type="checkbox" ng-model="checked" ng-init="checked=true" /><br/>
  <input type="email" id="inputEmail" placeholder="Email" ng-model="email" required>
<div class="hint">
    <h4 name="mailValidator" ng-if="checked" ng-show="true">Invalid Email</h4>
    <h4 name="checkBlacklist" ng-if="!checked" ng-show="true">Email is not allowed</h4>
</div>

Here is a Fiddle-Demo

【问题讨论】:

    标签: javascript angularjs validation blacklist


    【解决方案1】:

    我为您的问题创建了 JSFiddle。

    JSFiddle

    查看:

    <div ng-controller="MyCtrl">
         <input placeholder="Email" ng-model="email" ng-pattern="emailRegExp" ng-class="{ error: !email }" />
         <h4 name="mailValidator" ng-show="!email">Invalid Email</h4>
         <h4 name="checkBlacklist" ng-show="email && inBlackList">Email is not allowed</h4>
    </div>
    

    控制器:

    function MyCtrl($scope) {
        $scope.inBlackList = false;
    
        //get from DB in your case
        var bannedEmail = ['qwe@qwe.qwe','qwe1@qwe.qwe','qwe2@qwe.qwe']
    
        $scope.emailRegExp = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/;
        $scope.$watch('email', function(newValue) {
           if(newValue){
               if(bannedEmail.indexOf(newValue) > -1) {
                   $scope.inBlackList = true;
               }
               else {
                   $scope.inBlackList = false;
               }
           }
       });      
    }
    

    【讨论】:

      【解决方案2】:

      如果您使用AngularJS forms 验证,则可以对第一个文本进行验证

      <form name="form" class="css-form" novalidate>
          <div class="controls">
            <input type="checkbox" ng-model="checked" ng-init="checked=true" /><br/>
            <input type="email" id="inputEmail" placeholder="Email" ng-model="email" required>
          </div>
          <div class="hint">
              <h4 name="mailValidator" ng-show="form.uEmail.$error.email && !onBlacklist">Invalid Email</h4>
              <h4 name="checkBlacklist" ng-show="onBlacklist">Email is not allowed</h4>
          </div>
      </form>
      

      然后在控制器中,您可以查看电子邮件更改,当它被列入黑名单时,将 onBlacklist 设置为 true,希望对您有所帮助

      【讨论】: