簡體   English   中英

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

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

當用戶在輸入字段(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是arraylist(invalidEmailAddresses)中傳遞的字符串(在您的情況下為emailaddressVal)的位置。 它將返回一個大於或等於0的值。根據您的要求,當您希望主機名為主機名時,您必須顯示該消息。 你需要做if($.inArray(emailaddressVal, invalidEmailAddresses) >=0)

您可以像這樣使用jQuery inArray測試。

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

代碼beloe測試用戶輸入以查看它是否在數組中並存儲它所在的索引。

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,這是數組的第一個索引。

 $.inArray(emailaddressVal,invalidEmailAddresses) > 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM