2014-09-24 122 views
0

下午好,我遇到了以下问题。验证动态字段jquery

我正在使用jQuery验证插件来验证我的表单v1.13.0客户端。

工作得很好。

但我不能解决它的问题是:

我有一个字段名称“产品[]”,其是一个数组。 我可能有一个,或者我可能有20个产品在这个阵列中。

这里是我的代码:

data_emissao: {required: true}, 
forma_pagamento: {required: true}, 
produto[]: {required: true}, // tried this with no sucess 

有谁遇到这个问题?

+0

您可能想使用'produto' w/o'[]' – yoelp 2014-09-24 17:03:35

+0

不打算!如同 – 2014-09-24 18:03:59

回答

-1

如果您使用produto作为数组,您必须指定其索引或它不会按预期工作。尝试使用produto[0]表示您需要阵列中至少有一个值。

2

两个问题...

1)如果您的字段名称包含括号,圆点或其他特殊字符,则必须用引号括起来。

"produto[]": { 
    required: true 
} 

2)但是,除非input包含此确切名称,name="produto[]",那么它将无法正常工作,你不能的.validate()rules选项内声明的数组。 rules选项只接受单个字段名称的列表。


两个可能的解决方案......

1)如下,您可以使用.rules()方法。使用jQuery“开始”选择器来选择整个数组,并使用jQuery .each().rules('add')方法应用于此组中的每个字段。

$('[name^="produto"]').each(function() { // select elements using "starts with" selector 
    $(this).rules('add', { 
     required: true, 
     // other rules 
    }); 
}); 

2)但是,如果唯一的规则就是required,那么你就不需要使用任何JavaScript就宣布它。您可以使用requiredHTML5属性,而jQuery Validate插件仍会将其选中。

<input type="text" name="produto[0]" required="required" /> 
<input type="text" name="produto[1]" required="required" /> 
<input type="text" name="produto[2]" required="required" /> 
<input type="text" name="produto[3]" required="required" /> 
<input type="text" name="produto[4]" required="required" />