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

Need help checking if a value exist using JQuery .inArray()

本文关键字:检查 是否 存在 inArray 帮助 JQuery      更新时间:2023-09-26

当用户在输入字段(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出现在主机名数组中时,您必须显示消息。你需要做if($.inArray(emailaddressVal, invalidEmailAddresses) >=0)

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

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

下面的代码测试用户输入,看看它是否在数组中,并存储它所在的索引。

var inArrTest = $.inArray(emailaddressVal, invalidEmailAddresses);

此代码测试inArrTest变量,并获取用户匹配值的索引。

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

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

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

$.inArray(invalidEmailAddresses,emailaddressVal) == -1)

Sukanya的代码检查变量是否大于0,0是数组的第一个索引。

 $.inArray(emailaddressVal,invalidEmailAddresses) > 0