ale*_*ias 11 validation angularjs
有没有办法在单个输入字段中验证一个或多个电子邮件地址?
我目前正在探索的方法是创建一个自定义指令,如果检测到逗号,它会将输入拆分为不同的电子邮件.这是我到目前为止:
angular.module('myApp')
.directive('multipleEmails', function () {
return {
require: 'ngModel',
link: function(scope, element, attrs, ctrl) {
ctrl.$parsers.unshift(function(viewValue) {
var emails = viewValue.split(',');
// loop that checks every email, returns undefined if one of them fails.
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我无法手动调用角度电子邮件验证程序.
编辑:plunkr
编辑2:事实证明我可以使用角度1.3
Sol*_*gon 14
http://plnkr.co/edit/YrtXOphxkczi6cwFjvUp?p=preview
.directive('multipleEmails', function () {
return {
require: 'ngModel',
link: function(scope, element, attrs, ctrl) {
ctrl.$parsers.unshift(function(viewValue) {
var emails = viewValue.split(',');
// loop that checks every email, returns undefined if one of them fails.
var re = /\S+@\S+\.\S+/;
// angular.foreach(emails, function() {
var validityArr = emails.map(function(str){
return re.test(str.trim());
}); // sample return is [true, true, true, false, false, false]
console.log(emails, validityArr);
var atLeastOneInvalid = false;
angular.forEach(validityArr, function(value) {
if(value === false)
atLeastOneInvalid = true;
});
if(!atLeastOneInvalid) {
// ^ all I need is to call the angular email checker here, I think.
ctrl.$setValidity('multipleEmails', true);
return viewValue;
} else {
ctrl.$setValidity('multipleEmails', false);
return undefined;
}
// })
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
您可以使用ngPattern
<input ng-model="mymodel.attribute" required ng-pattern="someRegex">
Run Code Online (Sandbox Code Playgroud)
其中someRegex设置为逗号分隔的电子邮件地址模式。
AngularJS input.js有 EMAIL_REGEXP,您可以重用它来重建模式。这与验证相同input[email]。
或者类似的东西
| 归档时间: |
|
| 查看次数: |
15378 次 |
| 最近记录: |