jQuery使用通配符验证设置规则以查找目标字段

时间:2012-12-14 19:25:16

标签: jquery jquery-validate

是否有可能通过通配符添加规则?我认为设置这样的规则是不可能的......

$("#form").validate({
        // errorLabelContainer: $("div#error"),
        errorElement: "p",
        errorClass: "form-error",
        rules: {
             $("input[name*='x.child']"): {
                required: true,
                minlength: 5
            }
        }
});

1 个答案:

答案 0 :(得分:7)

使用内置的rules()方法添加规则。 See documentation.

注意:必须在致电.validate()之后调用此方法

jsFiddle DEMO

$("#form").validate({
    errorElement: "p",
    errorClass: "form-error"
});

// the following method must come AFTER .validate()
$("input[name*='x.child']").each(function() {
    $(this).rules('add', {
        required: true,
        minlength: 5
    });
});

当您向表单动态添加字段时,此方法也非常有用。

以下内容与自定义messages:结合使用。请注意,格式与在.validate() ...

中添加规则作为选项时略有不同
$("input[name*='x.child']").each(function() {
    $(this).rules('add', {
        required: true,
        minlength: 5,
        messages: {
            required: "Required input",
            minlength: jQuery.format("At least {0} characters are necessary")
        }
    });
});

如其他地方所述,您也可以创建一个class并使用这样的...

jsFiddle DEMO

HTML:

<input type="text" class="myclass" name="whatever" />

jQuery的:

$("#form").validate({
    errorElement: "p",
    errorClass: "form-error"
});

// the following method must come AFTER .validate()
$('#form').find('.myclass').each(function() {
    $(this).rules('add', {
        required: true,
        minlength: 5,
        messages: {
            required: "Required input",
            minlength: jQuery.format("At least {0} characters are necessary")
        }
    });
});