Javascript Jquery返回false
通过这段代码,我想了解电子邮件地址是否包含数组中包含的域,但函数始终返回-1Javascript Jquery返回false,javascript,jquery,arrays,Javascript,Jquery,Arrays,通过这段代码,我想了解电子邮件地址是否包含数组中包含的域,但函数始终返回-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",
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');
}
这是失败的,因为您正在数组中查找某个不包含它的内容(电子邮件地址)(您的数组仅包含域) 因此,实际上,您似乎不想检查完整的电子邮件,而只想检查域部分 因此,您可以:
//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...
}
这是失败的,因为您正在数组中查找某个不包含它的内容(电子邮件地址)(您的数组仅包含域) 因此,实际上,您似乎不想检查完整的电子邮件,而只想检查域部分 因此,您可以:
//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...
}
你可以试试这个
HTML代码:
<input type="text" id="email" value="dasdas@gmail.com">
你可以试试这个
HTML代码:
<input type="text" id="email" value="dasdas@gmail.com">
您的代码正在检查整个电子邮件,而不仅仅是域。因此,添加以下检查应该可以修复错误
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');
}
您的代码正在检查整个电子邮件,而不仅仅是域。因此,添加以下检查应该可以修复错误
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');
}
因为
'dasdas@gmail.co“
(etc)不在您的数组中。很好”dasdas@gmail.com与“gmail.com”不同。您应该只测试域,而不测试整个电子邮件。和索引是否相同?使用它可以工作ele.val().split('@')[1],谢谢=)可能的重复,因为'dasdas@gmail.co“
(etc)不在您的数组中。很好”dasdas@gmail.com与“gmail.com”不同。您应该只测试域,而不是整个电子邮件。以及相同的索引?通过此测试,它可以工作ele.val().split('@')[1],谢谢=)可能重复的感谢,但我已经用ele.val()解决了。split('@')[1]谢谢,但我已经用ele.val()解决了。split('@')[1]是的,谢谢=)您的欢迎:)是的,谢谢=)您的欢迎:)