Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态输入数组元素的JQuery验证_Javascript_Jquery_Jquery Validate - Fatal编程技术网

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

Javascript 动态输入数组元素的JQuery验证,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我有一个表单,用户可以在其中添加他打算购买/出售的项目。我拥有的相应验证规则如下: rules: { 'items[][name]': { required: true }, 'items[][description]': { required: true },

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

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');
                    }
var$clone=original.clone().removeAttr('id');//“原始”是项目的第一行
$clone.find(':text')//获取文本输入
.val(“”)//重置它们的值
.removeClass('error');//删除错误类(如果有)
/*
*我有一个与显示错误的每个输入相对应的错误范围。
*在这里,我得到输入和span元素,将它们分成两组,然后
*向它们中的每一个添加一个随机种子,以获得jQuery errorHandler用于放置错误的唯一id
*/
var$formElements=$clone.find('input:text,span'),
$偶数=$formElements.filter(“:偶数”),
$odd=$formElements.filter(':odd');
对于(变量i=0;i<$偶数长度;i++){
var idParts=$($偶数[i]).attr('id').split('uuu');
var seed=Date.now();
$($偶数[i]).attr('id',idParts[0]+seed+''.'+idParts[1]);
$($odd[i]).attr('id',idParts[0]+seed+''.'''+idParts[1]+'.'错误');
}
我的问题是:

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

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

如果没有,那么通过维护项目数组来解决什么问题

提前谢谢

那么,通过维护一组项目来解决什么问题呢

它们必须各有一个唯一的
名称
。因此,当您创建它们时,在
名称上使用索引,就像您在
id上所做的那样

item[1], item[2], etc.
此外,在创建它们时,还可以使用将规则添加到每个元素中

换言之,您不能简单地克隆它们,并期望所有内容都能自动工作。

使用类似于此的索引