我正在尝试为表单添加验证
$('#reportForm').validate({
rules: {
'report[invoices_attributes][0][invoice_type]' :
{
required: true,
'report[invoices_attributes][0][invoice_type]':true
}
}
});
reportForm是我表单的ID。我的所有输入字段名称值都将类似'report[invoices_attributes][indexnr]...'
(因为我使用的是嵌套属性,并且可以有0个或更多元素)
为此,我希望将所有输入名称值与正则表达式匹配,如:/^report\[invoices_attributes\]\[[0-9]\](.*)/
如何将其添加到输入名称值(当前为'report[invoices_attributes][0][invoice_type]'
)的规则字段中,以匹配我感兴趣的所有字段?
答案 0 :(得分:0)
首先,我会entirely avoid Allman style code formatting in JavaScript。
在rules
的{{1}}对象内声明规则时,您一次只能将规则声明为一个字段...
.validate()
如果要在多个字段上声明,请使用$('#reportForm').validate({
rules: {
'report[invoices_attributes][0][invoice_type]': {
required: true,
},
'report[invoices_attributes][1][invoice_type]': {
required: true,
},
'report[invoices_attributes][2][invoice_type]': {
required: true,
},
// etc.
}
});
方法以及jQuery .rules()
和任何适合您的组的jQuery选择器。
.each()
您也不能拥有一个布局,其中所有被验证的字段共享相同的$('.myfields').each(function() {
$(this).rules('add', {
required: true
});
});
属性。 每个字段必须具有唯一的name
。或单个"分组"复选框/单选按钮可以共享name
。 没有解决方法。
如果您只需要可以通过布尔值声明的基本规则,那么您可以使用内联属性而不是name
方法或.rules()
对象。
rules
或者按班级......
<input name="foo" required="required" ....