【问题标题】: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,希望对您有所帮助