我需要让垃圾邮件发送者无效进入" gmail"," hotmail"," yahoo"," rediff"地址。并且只允许商业电子邮件。我使用了流行的验证器插件:http://jqueryvalidation.org/
所以这里是检查单个值并且有效的代码:
jQuery.validator.addMethod("biz", function(value, element) {
var email = value;
return !(email.indexOf("gmail") > -1);
}, "Only business emails allowed");
这是html:
<label>Email Address <em class="formee-req">*</em></label>
<input class="email" id="email" placeholder="Enter Business Email Only" type="text" name="email">
<span></span>
然后调用插件:
$('.basic-form').validate(
{
rules: {
email : {
biz: true
}
}
以上代码有效。所以现在我尝试验证多个值,如下所示:
jQuery.validator.addMethod("biz", function(value, element) {
var invalid_email_domains = ["gmail", "hotmail", "yahoo", "rediff"];
var email = value;
$.each(invalid_email_domains, function (index, invalid_domain) {
if(email.indexOf(invalid_domain) > -1) {
return true;
} else {
return false;
};
});
}, "Only business emails allowed");
它没有验证其他值,即我总是收到错误&#34; 只允许商业电子邮件&#34;无论我输入什么价值。我究竟做错了什么?我尝试翻转布尔值,但它只是继续返回相同的错误。
答案 0 :(得分:0)
以下是有效的代码:
jQuery.validator.addMethod("biz", function(value, element) {
var invalid_email_domains = ["gmail", "hotmail", "yahoo", "rediff"],
email = value,
isValid = true;
for (var i = 0; i < invalid_email_domains.length; i++) {
if (email.indexOf(invalid_email_domains[i]) > -1) {
// console.log("invalid biz address found");
isValid = false;
break;
}
};
return isValid;
}, "Only business emails allowed");
看起来我需要首先设置一个布尔值,然后在找到错误的值时突破循环。