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

Integrating custom function and rule using JQuery validator plugin

本文关键字:自定义函数 规则 集成 插件 JQuery 验证 使用      更新时间:2023-09-26

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

我发现了以下函数,它应该搜索子字符串,我认为这是搜索我的电子邮件字符串的好选择:jquery/javascript检查多个子字符串的字符串:

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
          },

有人能教我怎么做吗?

尝试使用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事件之后验证输入。