JQuery动态输入数组元素的验证

JQuery Validation of Dynamic Input Array Elements

本文关键字:验证 数组元素 输入 动态 JQuery      更新时间:2023-09-26

我有一个表单,用户可以在其中添加他打算购买/出售的物品。相应的验证规则如下:

rules: {
                'items[][name]': {
                    required: true
                },
                'items[][description]': {
                    required: true
                },
                'items[][rate]': {
                    required: true,
                    number: true
                },
                'items[][quantity]': {
                    required: true,
                    number: true
                }
        }
errorPlacement: function (error, element) {
                error.appendTo('#' + element.attr('id') + '_error');
            }

现在,用户还可以向表单添加新项。为此,我克隆第一行并将其附加到最后一行。对应代码如下:

var $clone = original.clone().removeAttr('id'); // original is the initial first row of items
                    $clone.find(':text') // get the text inputs
                        .val('') // reset their values
                        .removeClass('error'); // remove the error classes if any    
    /*
    * I have an error span corresponding to each input where I display the errors.
    * Here, i get the input and span elements, split them in two groups, then 
    * add a random seed to each of them to get a unique id to be used by jQuery errorHandler to place the error
    */
                    var $formElements = $clone.find('input:text, span'),
                        $even = $formElements.filter(':even'),
                        $odd = $formElements.filter(':odd');
                    for (var i = 0; i < $even.length; i++) {
                        var idParts = $($even[i]).attr('id').split('__');
                        var seed = Date.now();
                        $($even[i]).attr('id', idParts[0] + seed + '_' + idParts[1]);
                        $($odd[i]).attr('id', idParts[0] + seed + '_' + idParts[1] + '_error');
                    }

My Issues are:

->只验证静态创建的第一个项目行。

我知道jQuery验证器需要一个唯一的名称为每个字段。但是,在本例中,我需要一个项的数组。无论如何,即使是新创建的项字段也具有相同的名称,因此它们不应该被自动验证吗?

如果不是,那么通过维护项数组来解决什么问题??

那么维护一个项目数组的工作是什么?

它们必须每个都有唯一的name。所以当你创建它们的时候,在name上使用你的索引就像你在id上做的那样。

item[1], item[2], etc.

同样,当您创建它们时,您将使用.rules('add')方法向每个元素添加规则。

换句话说,您不能简单地克隆它们并期望一切都自动工作。