验证动态字段jquery

验证动态字段jquery,jquery,jquery-validate,Jquery,Jquery Validate,下午好,我遇到了以下问题 我正在使用jQuery验证插件验证我的表单v1.13.0客户端 工作正常 但我无法解决的问题是: 我有一个字段名“product[]”,它是一个数组。 在这个阵列中,我可能有一个或20个产品 这是我的密码: data_emissao: {required: true}, forma_pagamento: {required: true}, produto[]: {required: true}, // tried this with no sucess 有

下午好,我遇到了以下问题

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

工作正常

但我无法解决的问题是:

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

这是我的密码:

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

有人遇到过这个问题吗?

如果将
produto
用作数组,则必须指定其索引,否则它将无法正常工作。请尝试使用
produto[0]
指示您至少需要数组中的一个值。

两个问题

1) 如果字段名包含方括号、点或其他特殊字符,则必须将名称括在引号中

"produto[]":  {
    required: true
}
2) 但是,除非
输入
包含此确切名称,
name=“produto[]”
,否则它将不起作用,因为您无法在
.validate()的
规则
选项中声明数组。
规则
选项仅接受单个字段名的列表


两种可能的解决方案

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声明它。您可以只使用
required
HTML5属性,jQuery验证插件仍然会选择它

<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" />


您可能想使用
produto
而不使用
[]
而不是intendi!当然