Javascript 电子邮件黑名单与验证

Javascript 电子邮件黑名单与验证,javascript,angularjs,validation,blacklist,Javascript,Angularjs,Validation,Blacklist,我是新来的,我试着做一个简单的黑名单检查。目前,我有两个文本,我可以显示和隐藏与ng显示。第一个应该在邮件模式错误时显示,第二个应该在正确时隐藏和/或在黑名单上 我的问题是,我不知道该模型必须如何实现。目前,它是由一个复选框模拟的。也许有人有个暗示 <div class="controls"> <input type="checkbox" ng-model="checked" ng-init="checked=true" /><br/> <inp

我是新来的,我试着做一个简单的黑名单检查。目前,我有两个文本,我可以显示和隐藏与ng显示。第一个应该在邮件模式错误时显示,第二个应该在正确时隐藏和/或在黑名单上

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

<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>
如果使用验证,则可以对第一个文本进行验证

<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>

然后在控制器中,您可以查看电子邮件更改,当它被列入黑名单时,请将其设置为“真”,希望这有助于我为您的问题创建JSFIDLE

视图:

<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;
           }
       }
   });      
}