使用JQuery验证器插件集成自定义函数和规则

时间:2014-04-14 14:36:17

标签: javascript jquery validation

我有一个带有电子邮件字段的表单 作为验证的一部分,我想排除某些域名(例如gmail,yahoo等)

我找到了以下函数,它应该搜索我认为是搜索我的电子邮件字符串的不错的子字符串: 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 个答案:

答案 0 :(得分: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事件后验证输入。