Javascript 需要使用JQuery.inArray()检查值是否存在的帮助吗

Javascript 需要使用JQuery.inArray()检查值是否存在的帮助吗,javascript,jquery,arrays,Javascript,Jquery,Arrays,当用户在输入字段(emailaddressVal)中键入与我的数组(invalidEmailAddresses)中的值匹配的值时,我希望显示一条错误消息。但我不知道该怎么做。 谢谢你的帮助 $(document).ready(function(){ $("input[name='emailAddress']").blur(function(){ // Actual Email Validation function var emailReg =

当用户在输入字段(emailaddressVal)中键入与我的数组(invalidEmailAddresses)中的值匹配的值时,我希望显示一条错误消息。但我不知道该怎么做。 谢谢你的帮助

$(document).ready(function(){
    $("input[name='emailAddress']").blur(function(){
        // Actual Email Validation function

            var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
            var hasError = false;
            var emailaddressVal = $("input[name='emailAddress']").val();
            var invalidEmailAddresses = 
            ['aol.com', 'yahoo.com', 'yahoo.fr', 'juno.com', 'hotmail.com', 'gmail.com'];     

            if($.inArray(invalidEmailAddresses,emailaddressVal) == -1) {
            alert('The email provided is not from a business related domain');                 

            }


    });


});
请尝试以下代码

    $(document).ready(function () {
    $("input[name='emailAddress']").blur(function () {

        var emailAddress = $("input[name='emailAddress']").val().trim();

        if (isValidEmailAddres(emailAddress)) {
            var hasError = false;
            var emailaddressVal = emailAddress.split('@').slice(1)[0].trim();

            var invalidEmailAddresses = ['aol.com', 'yahoo.com', 'yahoo.fr', 'juno.com', 'hotmail.com', 'gmail.com'];

            if ($.inArray(emailaddressVal, invalidEmailAddresses) >=0) {
                alert('The email provided is not from a business related domain');

            }
        } else alert("Invalid EmailID");
    });

    function isValidEmailAddres(emailID) {
        var regexExp = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
        return regexExp.test(emailID);
    }

});
看到这个了吗 我所做的改变

我添加了一个电子邮件验证功能。只有当它是有效的电子邮件地址时,您才能继续进行主机名检查

$.inArray
的正确格式为
$.inArray(stringvalue,array)
。所以它必须是
$.inArray(emailaddressVal,invalidEmailAddresses)

emailaddressVal将包含完整的电子邮件地址。首先,您需要从完整的电子邮件地址中提取主机名。这是在
var-emailaddressVal=emailAddress.split('@').slice(1)[0].trim()
因此,如果您的电子邮件地址是
abc@gmail.com
,上面的行将返回
gmail.com

$inArray的返回类型是传递的字符串(在您的示例中为emailaddressVal)在arraylist(invalidEmailAddresses)中的位置。它将返回一个大于或等于0的值。根据您的要求,当您希望电子邮件中的主机id出现在主机名数组中时,您必须显示消息。你需要做什么
如果($.inArray(emailaddressVal,invalidEmailAddresses)>=0)

您可以像这样使用jQuery inArray测试

var emailaddressVal = $("input[name='emailAddress']").val();
下面的代码测试用户输入,看看它是否在数组中,并存储它所在的索引

var inArrTest = $.inArray(emailaddressVal, invalidEmailAddresses);
此代码测试INARTEST变量并获取用户匹配值的索引

if (inArrTest) {
    // Your error message would go here. //
    console.log(invalidEmailAddresses[inArrTest]);
}

您可以将错误消息嵌套在if块中。

原始代码不起作用,因为-1检查变量是否不在数组中

$.inArray(invalidEmailAddresses,emailaddressVal) == -1)
Sukanya的代码检查变量是否大于数组的第一个索引0

 $.inArray(emailaddressVal,invalidEmailAddresses) > 0

jQuery.inArray(value,array[,fromIndex])
我理解,但是如何验证用户键入的任何值。我不想硬编码这个值,请解释一下区别是什么,以及为什么你的值可以工作,而原来的值不能。此外,我认为在代码中间有<代码>调试器< /代码>会引发错误;我不确定这一点,但首先,在你的代码中你做了
$。inArray(invalidEmailAddresses,emailaddressVal)
这是不正确的。它应该是
$.inArray(stringvalue,array)
。其次,
emailaddressVal
是像gmail.com一样的主机名。你传递了整个电子邮件地址。您必须从电子邮件地址中提取主机名。我在这里做了
var-emailaddressVal=$(“input[name='emailAddress']).val().split('@').slice(1)[0].trim()。第三,当电子邮件地址来自
invalidEmailAddresses
时,您希望显示一个错误<当电子邮件地址来自您所在的阵列中的域时,code>$inArray
将返回大于
0
的值。谢谢你的澄清Sukanya@Sukanya我在回答中的意思是,这是问题的一部分。对不起,没有澄清。你能把它编辑一下吗?@Sukanya一件事。当我在输入字段中键入名称而不使用@符号时,会出现以下控制台错误。未捕获的TypeError:无法读取未定义的属性“trim”