2014-04-14 27 views
1

我有一個帶有電子郵件字段的表單。
作爲驗證的一部分,我想排除某些域使用JQuery驗證器插件集成自定義函數和規則

我發現下面的功能,應搜索子我相信這是一個很好的選擇來搜索我的電子郵件中的字符串(如Gmail,雅虎等): jquery/javascript check string for multiple substrings

function isSubStringPresent(str){ 
    for(var i = 1; i < arguments.length; i++){ 
     if(str.indexOf(arguments[i]) > -1){ 
      return true; 
     } 
    }  
    return false; 
}  

isSubStringPresent('myemail', 'gmail', 'yahoo', ...) 

我就如何將此功能與jQuery的驗證插件集成困惑。

請參閱以下內容:

我有以下我下面的表格如下:

$(document).ready(function(){ 
    $.validator.addMethod(
        "wrong_domain", 
        THE isSubStringPresent FUNCTION SHOULD BE INSERTED HERE SOMEHOW...      
        }, 
        'Not an acceptable email'); 

    $.validator.classRuleSettings.wrong_domain = { wrong_domain: true};  

$('#registration-form').validate({ 
     rules: { 
      FirstName: { 
      required: true, 
      }, 

      Email: { 
      required: true, 
      email: true, 
      wrong_domain: true 
      }, 

有人能告訴我如何做到這一點?

回答

1

嘗試使用apply在多個排除域到驗證函數來傳遞:

var excludes = ['myemail', 'gmail', 'yahoo']; 
$.validator.addMethod(
    "wrong_domain", 
    function(value, element) { 
     // take a shallow copy of excludes 
     var myArguments = excludes.slice(0); 
     // add value to the front of the arguments 
     myArguments.unshift(value); 
     // use myArguments as the arguments array for isSubStringPresent 
     return !isSubStringPresent.apply(this, myArguments); 
    }, 
    'Not an acceptable email'); 

下面是一個例子Fiddle。這將在每個keypress事件之後驗證輸入。

+0

工作過,非常感謝! - 比爾 – user61629