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

MyM*_*ial 0 jquery jquery-validate

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

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

Spa*_*rky 7

使用内置rules()方法添加规则. 见文档.

注意:您必须调用这个方法后,你打电话.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
    });
});
Run Code Online (Sandbox Code Playgroud)

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

以下结合自定义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")
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

正如其他地方所提到的,你也可以创建一个class并使用这样......

jsFiddle DEMO

HTML:

<input type="text" class="myclass" name="whatever" />
Run Code Online (Sandbox Code Playgroud)

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")
        }
    });
});
Run Code Online (Sandbox Code Playgroud)