我有这两个功能:
validateEmail: function(value) {
var regex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
return (regex.test(value)) ? true : false;
}
validateEmails: function(string) {
var self = shareEmail;
var result = string.replace(/\s/g, "").split(/,|;/);
for(var i = 0;i < result.length;i++) {
if(!self.validateEmail(result[i])) {
return false;
} else {
return true;
}
}
}
问题在于,当我像这样if(!self.validateEmails(multipleEmails)) {
测试电子邮件时,我只根据字符串中的第一封电子邮件得到真或假,但我想测试字符串中的任何电子邮件。
谢谢!
答案 0 :(得分:10)
问题是你的if / else阻止;你在两种情况下都回来了。这意味着它只在评估一个元素后离开了函数。
我已修改validateEmails以演示您可能想要执行的操作:
validateEmail: function(value) {
var regex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
return (regex.test(value)) ? true : false;
}
validateEmails: function(string) {
var self = shareEmail;
var result = string.replace(/\s/g, "").split(/,|;/);
for(var i = 0;i < result.length;i++) {
if(!self.validateEmail(result[i])) {
return false;
}
}
return true;
}
答案 1 :(得分:2)
怎么样?
validateEmails: function(string) {
var self = shareEmail;
var result = string.replace(/\s/g, "").split(/,|;/);
var errors = [];
for(var i = 0;i < result.length;i++) {
if(!self.validateEmail(result[i])) {
errors[i] = result[i] + ' is not valid.';
}
}
if (errors.length > 0) {
alert(errors.join('\n'));
return false;
} else {
return true;
}
}
答案 2 :(得分:1)
我发现最易于维护的方法是使用变量来存储返回输出。
validateEmail: function(value) {
var regex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
return (regex.test(value)) ? true : false;
}
validateEmails: function(string) {
var self = shareEmail;
var result = string.replace(/\s/g, "").split(/,|;/);
var allOk = true;
for(var i = 0;i < result.length;i++) {
if(!self.validateEmail(result[i])) {
allOk = false;
}
}
return allOk;
}
答案 3 :(得分:1)
如果您使用jquery-validate,验证方法将如下所示:
jQuery.validator.addMethod("separated_emails", function(value, element) {
if (this.optional(element)) {
return true;
}
var mails = value.split(/,|;/);
for(var i = 0; i < mails.length; i++) {
// taken from the jquery validation internals
if (!/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(mails[i])) {
return false;
}
}
return true;
}, "Please specify a email address or a comma separated list of addresses");
答案 4 :(得分:0)
以下代码非常适合使用JQuery验证用逗号或分号分隔的多个电子邮件地址:
var emailReg = new RegExp(/^([A-Z0-9.%+-]+@@[A-Z0-9.-]+.[A-Z]{2,6})*([,;][\s]*([A-Z0-9.%+-]+@@[A-Z0-9.-]+.[A-Z]{2,6}))*$/i);
var emailText = $('#email').val();
if (!emailReg.test(emailText)) {
alert('Wrong Email Address\Addresses format! Please reEnter correct format');
return false;
}