2014-07-17 45 views
0

我需要使輸入「gmail」,「hotmail」,「yahoo」,「rediff」地址的垃圾郵件製造者無效。並只允許商業電子郵件。我使用的是流行的驗證插件:http://jqueryvalidation.org/jquery驗證器插件代碼不針對多個值

所以這裏是檢查針對單個值和作品的代碼:

jQuery.validator.addMethod("biz", function(value, element) { 
    var email = value; 
    return !(email.indexOf("gmail") > -1); 
    }, "Only business emails allowed"); 

下面是HTML:

<label>Email Address <em class="formee-req">*</em></label> 
    <input class="email" id="email" placeholder="Enter Business Email Only" type="text" name="email"> 
    <span></span> 

然後是調用插件:

$('.basic-form').validate(
    { 

    rules: { 
     email : { 
     biz: true 
     } 
    } 

上述代碼有效。所以,現在當我試圖驗證對多個值,像這樣:

jQuery.validator.addMethod("biz", function(value, element) { 
    var invalid_email_domains = ["gmail", "hotmail", "yahoo", "rediff"]; 
    var email = value; 
    $.each(invalid_email_domains, function (index, invalid_domain) { 
     if(email.indexOf(invalid_domain) > -1) { 
      return true; 
     } else { 
      return false; 
     }; 
    }); 

    }, "Only business emails allowed"); 

它不驗證爲其他值即我總是得到錯誤「只有企業郵件允許」無論輸入怎樣的價值。我究竟做錯了什麼?我嘗試翻轉布爾,但它只是不斷返回相同的錯誤。

回答

0

這裏是工作的代碼:

jQuery.validator.addMethod("biz", function(value, element) { 
    var invalid_email_domains = ["gmail", "hotmail", "yahoo", "rediff"], 
    email = value, 
    isValid = true; 

    for (var i = 0; i < invalid_email_domains.length; i++) { 
     if (email.indexOf(invalid_email_domains[i]) > -1) { 
     // console.log("invalid biz address found"); 
     isValid = false; 
     break; 
     } 
    }; 

    return isValid; 

    }, "Only business emails allowed"); 

看起來我需要設置一個布爾值,然後再跳出循環的時候發現錯誤值。