Jquery - 在一个大验证器方法中调用多个验证器

Jquery - Calling multiple validators inside one big validator method

我有 3 个验证器方法来验证表单域。对于我必须验证的每个表单字段,我需要一直调用这 3 个验证器。是否可以编写一个验证器方法,在内部调用这 3 个方法并 returns 适当的错误?

/*
 * Do not allow a name to include only underscores.
 */
jQuery.validator.addMethod('notallunderscores', function(value, element)
{
    value = value.replace(/\_/g,'');
    return this.optional(element) || value.length > 0;
}, "Enter more than only underscore characters.");

/*
 * Do not allow a name to include only hyphens.
 */
jQuery.validator.addMethod('notallhyphens', function(value, element)
{
    value = value.replace(/\-/g,'');
    return this.optional(element) || value.length > 0;
}, "Enter more than only hyphens.");

/*
 * Do not allow a name to include leading or trailing spaces.
 */
jQuery.validator.addMethod('notrailingorleadingspaces', function(value, element)
{
    return this.optional(element) || ! value.match(/^ .*|.*\ $/g);
}, "Please remove any leading or trailing spaces.");

我要找的验证器应该是这样的:

     /*
     * Call each of the above validator methods and return appropriate error.
     */
    jQuery.validator.addMethod('validateformfield', function(value, element)
    {
        //Call the above 3 validator methods
        //Return the appropriate error returned by the above validators.
    }, "Return the error message from the failed validator.");

不,您不能将三种不同的自定义方法组合成一个自定义方法同时还保留三种不同的错误消息。无法将它们相互嵌套。


但是,您可以创建 "compound rule" 并使用 the addClassRules method 将其分配给 class

jQuery.validator.addClassRules("myCompoundRule", {
    notallunderscores: true,
    notallhyphens: true,
    notrailingorleadingspaces: true
});

然后将 class 分配给 input 您希望应用这些规则的位置...

<input type="text" name="foo" class="myCompoundRule ...

否则,如果您不想使用 class,那么您必须使用 .validate() 方法单独声明自定义规则,我想您已经在这样做了...

$('#myform').validate({
    rules: {
        foo: {
            notallunderscores: true,
            notallhyphens: true,
            notrailingorleadingspaces: true
        }
    }
});

您还可以将各种规则组合成 "sets"。请参阅下面我的 SO 答案,了解将多个规则分配给多个字段的其他创造性方法。

  • How can we specify rules for jquery validation plugin by class?

  • jQuery Validation Plugin - adding rules that apply to multiple fields