将多个输入字段添加到数组时出现问题

时间:2013-12-29 14:31:26

标签: javascript jquery arrays multidimensional-array

我有以下包含许多行的表单(访问者可以通过单击按钮添加新行)。我想将所有条目添加到数组中以通过$ .ajax发送。

这是表格:

<li class=aff class=gastosRow>
    <label>Descripción</label>
    <input class=gastosDescrizione type=text size=30>
</li>
<li>
    <label>Importe</label>
    <input class=gastosImporto type=text>
</li>

这是应该保留所有条目的数组:

    var gastosArray = [];

    $('.gastosRow, .aff').map(function(){var row = $(this);

    gastosArray.push({descrizione: row.find('.gastosDescrizione').val(), importo: row.find('.gastosImporto').val()});
});

但阵列的结果不是我想要的。我希望每行(gastosArray[])gastosDescrizione的值和gastosImporto的值。它现在不起作用,仅列出gastosDescrizione ...

的值

2 个答案:

答案 0 :(得分:2)

在看到您的标记时,您正在使用当前选择旁边的类gastosImporto的文本框,因此请尝试在您的案例中使用.next()来实现您所需的内容。

尝试,

<li class='gastosRow aff'>
    <label>Descripción</label>
    <input class=gastosDescrizione type=text size=30>
</li>
<li>
    <label>Importe</label>
    <input class='gastosImporto' type=text>
</li>

JS:

var gastosArray = [];
$('.gastosRow,.aff').each(function(){
  var row = $(this);
  gastosArray.push({
    descrizione: row.find('.gastosDescrizione').val(),
    importo:     row.next().find('.gastosImporto').val()
  });
});

答案 1 :(得分:1)

您可以使用mapget

var gastosArray = $('.gastosRow, .aff').map(function () {
   return {
        descrizione: $(this).find('.gastosDescrizione').val(),
        importo: $(this).find('.gastosImporto').val()
    }
}).get();