简体   繁体   English

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

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

I would like to display an error message when a user types a value in an input field (emailaddressVal) that matches a value in my array (invalidEmailAddresses). 当用户在输入字段(emailaddressVal)中键入与我的数组中的值匹配的值(invalidEmailAddresses)时,我想显示错误消息。 But I don't know how to go about it. 但我不知道如何去做。 Thanks for your help! 谢谢你的帮助!

$(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');                 

            }


    });


});

Try the following code 请尝试以下代码

    $(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);
    }

});

See this fiddle Changes That I did 看到这个小提琴变化,我做了

I added a email Validation Function. 我添加了电子邮件验证功能。 Only if it is a valid email address you will proceed for hostname checking. 只有当它是有效的电子邮件地址时,您才会进行主机名检查。

Correct Format of $.inArray is $.inArray( stringvalue, array) . $.inArray正确格式是$.inArray( stringvalue, array) So it has to be $.inArray(emailaddressVal,invalidEmailAddresses) 所以它必须是$.inArray(emailaddressVal,invalidEmailAddresses)

emailaddressVal will contain a full email address. emailaddressVal将包含完整的电子邮件地址。 First you need to extract the hostname from that full email address. 首先,您需要从该完整的电子邮件地址中提取主机名。 It is done at var emailaddressVal = emailAddress.split('@').slice(1)[0].trim(); 它在var emailaddressVal = emailAddress.split('@').slice(1)[0].trim(); So if your email address is abc@gmail.com , the above line will return gmail.com . 因此,如果您的电子邮件地址是abc@gmail.com ,上面的行将返回gmail.com

Return type of $inArray is the position at which the passed string (emailaddressVal in your case) is present in the arraylist (invalidEmailAddresses). 返回类型$ inArray是arraylist(invalidEmailAddresses)中传递的字符串(在您的情况下为emailaddressVal)的位置。 It will return a value greater than or equal to 0. As per your requirement you have to show the message when you want the host in email id is present in array of host names. 它将返回一个大于或等于0的值。根据您的要求,当您希望主机名为主机名时,您必须显示该消息。 You need to do if($.inArray(emailaddressVal, invalidEmailAddresses) >=0) 你需要做if($.inArray(emailaddressVal, invalidEmailAddresses) >=0)

You can use the jQuery inArray test like this. 您可以像这样使用jQuery inArray测试。

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

The code beloe test the user input to see if it is in the array and stores the index in which it is located. 代码beloe测试用户输入以查看它是否在数组中并存储它所在的索引。

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

This code test the inArrTest variable and gets the index of the users matched value. 此代码测试inArrTest变量并获取用户匹配值的索引。

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

You can nest your error message inside the if block. 您可以将错误消息嵌套在if块中。

The original code does not work because the -1 checks to see if the variable is not in the array. 原始代码不起作用,因为-1检查变量是否不在数组中。

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

Sukanya's code check to see if the variable is greater than 0 which is the first index of an array. Sukanya的代码检查以查看变量是否大于0,这是数组的第一个索引。

 $.inArray(emailaddressVal,invalidEmailAddresses) > 0

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM