Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery返回false_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript Jquery返回false

Javascript 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",

通过这段代码,我想了解电子邮件地址是否包含数组中包含的域,但函数始终返回-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'); 
}


这是失败的,因为您正在数组中查找某个不包含它的内容(电子邮件地址)(您的数组仅包含域)

因此,实际上,您似乎不想检查完整的电子邮件,而只想检查域部分

因此,您可以:

//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]是的,谢谢=)您的欢迎:)是的,谢谢=)您的欢迎:)