【问题标题】:issue adding multiple input fields to an array将多个输入字段添加到数组的问题
【发布时间】:2013-12-29 14:31:26
【问题描述】:

我有以下包含许多行的表单(访问者可以通过单击按钮添加新行)。我想将所有条目添加到数组中以通过 $.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的值...

【问题讨论】:

  • 您提供了一些无效的标记和脚本,请提供有效的代码以帮助您。
  • 对不起,我使用的是notepad++,没有验证器
  • 但您仍然可以复制/粘贴有效的 HTML 标记...现在提供呈现的 HTML!
  • @A.沃尔夫安顿下来,兄弟。用户正在尝试……无需粗鲁。
  • @Gabz 这无效:&lt;li class=aff class=gastosRow&gt;

标签: javascript jquery arrays multidimensional-array


【解决方案1】:

在看到您的标记时,您会看到一个带有 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()
  });
});

【讨论】:

  • 如果您不打算使用结果或返回值,则无需使用map;只需使用each
  • @Phrogz 是的,你是对的。!你也可以编辑它。 :)
  • 它确实可以正常工作,并更正使用each() 而不是map() 的建议。谢谢
【解决方案2】:

您可以使用mapget

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多