如何验证重复表单?

问题描述 投票:0回答:1

我想同时使用jquery Repeater和jquery验证库。这是我的验证规则:

$("#myForm").validate({
rules: {
    title: {
        required: true
    },
    subject: {
        required: true
    }
},
messages: {
    title: {
        required: "Enter title!"
    },
    subject: {
        required: "Enter subject!"
    }
},
errorElement: 'div',
errorPlacement: function (error, element) {
    var placement = $(element).data('error');
    if (placement) {
        $(placement).append(error)
    } else {
        error.insertAfter(element);
    }
},
submitHandler: function (form) {
    submitForm();
    return false;
}
});

但它不起作用。因为 jquery Repeater 创建像 data[0][title]、data[1][title]、data[0][subject]、data[1][subject] 等输入名称。因此我的规则不起作用命名标题或主题。如何验证这些名称,如 data[*][title]data[*][subject]

jquery jquery-validate jquery.repeater
1个回答
1
投票

正如我的评论中所述,当

.validate()
未知时,您无法在
name
方法中设置规则。 (如果缺少
name
,则无法使用此插件
。)

请记住,独特的

names
对于此插件的功能是必需的。以下任何技术仍然需要在每个字段上有一个独特的
name

如果需要设置像

required
这样的简单规则,那么您可以将它们声明为与
data
属性、HTML5 或类内联。
required="required"
class="required"
等,插件会自动拾取它们。

<input name="foo" required="required" ....

如果您无法更改内联 HTML,则可以使用

.rules()
方法 向这些字段添加规则,只要它们在您调用
.rules('add')
时存在即可。

  1. 在表单上调用

    .validate()
    ,以使用您的选项初始化插件。

  2. 使用 Repeater 或任何方法创建新字段,确保所有新字段都具有唯一的

    name
    属性

       $(this).find("[name$='[subject]']").rules('add', 
            required: true,
            messages: {
                required: "optional custom message"
    
        });
    
© www.soinside.com 2019 - 2024. All rights reserved.