我想同时使用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] ?
正如我的评论中所述,当
.validate()
未知时,您无法在 name
方法中设置规则。 (如果缺少name
,则无法使用此插件。)
names
对于此插件的功能是必需的。以下任何技术仍然需要在每个字段上有一个独特的 name
。
如果需要设置像
required
这样的简单规则,那么您可以将它们声明为与 data
属性、HTML5 或类内联。 required="required"
、class="required"
等,插件会自动拾取它们。
<input name="foo" required="required" ....
.rules()
方法 向这些字段添加规则,只要它们在您调用 .rules('add')
时存在即可。
在表单上调用
.validate()
,以使用您的选项初始化插件。
使用 Repeater 或任何方法创建新字段,确保所有新字段都具有唯一的
name
属性
$(this).find("[name$='[subject]']").rules('add',
required: true,
messages: {
required: "optional custom message"
});