通过这段代码,我想了解电子邮件地址是否包含数组中包含的域,但是该函数始终返回-1
var ele = jQuery('#email');
console.log( 'Email : ' + ele.val() );
var emailarr = ["gmail.com", "live.it", "email.it", "email.com",
"hotmail.it", "yahoo.it", "tiscali.it", "alice.it",
"icloud.com", "outlook.com", "outlook.it", "inwind.it",
"libero.it", "me.com", "mail.com", "virgilio.it",
"hotmail.com", "msn.com", "ymail.com","protonmail.com",
"fastwebnet.it" , "aruba.it"];
console.log( 'Index : ' + emailarr.indexOf(ele.val()) );
if (jQuery.inArray(ele.val(), emailarr) !== -1) {
ele.removeClass('error').addClass('normal');
}
else {
jval2.errors = true;
ele.removeClass('normal').addClass('error');
}
答案 0 :(得分:2)
您可以尝试使用此Link
HTML代码:
<input type="text" id="email" value="dasdas@gmail.com">
JS代码
var ele =jQuery('#email');
console.log( 'Email : ' + ele.val().split('@')[1] );
var emailarr = ["gmail.com", "live.it", "email.it", "email.com", "hotmail.it", "yahoo.it", "tiscali.it", "alice.it", "icloud.com", "outlook.com", "outlook.it", "inwind.it", "libero.it", "me.com", "mail.com", "virgilio.it", "hotmail.com", "msn.com", "ymail.com", "protonmail.com", "fastwebnet.it" , "aruba.it"];
console.log( 'Index : ' + emailarr.indexOf(ele.val().split('@')[1]) );
if(jQuery.inArray(ele.val().split('@')[1], emailarr) !== -1)
{
ele.removeClass('error').addClass('normal');
}
else
{
jval2.errors = true;
ele.removeClass('normal').addClass('error');
}
答案 1 :(得分:1)
之所以失败,是因为您要在不包含某些内容(电子邮件地址)的数组(您的数组仅包含域)中寻找内容。
因此,实际上,您似乎不是要检查完整的电子邮件,而是要检查域的一部分。
因此您可以这样做:
//better to rename emailarr to domains, since that's what it is
if (domains.filter(dmn => new RegExp('@'+dmn.replace(/(?=\.)/g, '\\')+'$').test(ele.val())).length) {
//OK...
}
如果您发现RegExp体操有点难以理解,可以改做:
let email_domain = ele.val().split('@')[1];
if (domains.filter(dmn => dmn == email_domain).length) {
//OK...
}
答案 2 :(得分:0)
您的代码正在检查整个电子邮件,而不仅仅是域。因此,添加以下检查应会修复该错误;
if (jQuery.inArray(ele.val().substring(ele.val().indexOf('@') + 1), emailarr) !== -1) {
ele.removeClass('error').addClass('normal');
}
else {
jval2.errors = true;
ele.removeClass('normal').addClass('error');
}