验证动态字段jquery

时间:2014-09-24 16:34:11

标签: jquery jquery-validate

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

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

工作得很好。

但我无法解决的问题是:

我有一个字段名称" product []",这是一个数组。 我可能有一个,或者我可能有20个产品。

这是我的代码:

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

有人遇到过这个问题吗?

2 个答案:

答案 0 :(得分:2)

两个问题......

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

"produto[]":  {
    required: true
}

2)但是,除非input包含此确切名称name="produto[]",否则它将无效,因为您无法在rules .validate()选项中声明数组。 rules选项仅接受单个字段名称的列表。


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

1)您可以使用.rules()方法,如下所示。使用jQuery“starts with”选择器选择整个数组,使用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 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" />

答案 1 :(得分:-1)

如果您使用produto作为数组,则必须指定其索引,否则它将无法按预期工作。尝试使用produto[0]表示您的阵列至少需要一个值。