【问题标题】:Create multidimentional array with dynamic form jquery使用动态形式jquery创建多维数组
【发布时间】:2011-12-16 20:01:29
【问题描述】:

我有以下表单,如果用户单击链接以添加更多项目,我会动态添加更多下拉列表(与这些完全相同)

<div class="dynamic-sale">
      <select name="sizes[]" id="sizes" class="entry-dropdown">
        <option value="3XL">3XL</option>
        <option value="2XL">2XL</option>
        <option value="XL">XL</option>
        <option value="L">L</option>
        <option value="M">M</option>
        <option value="YL">YL</option>
        <option value="YM">YM</option>
      </select> 
   <select name="number[]" id="amount" class="entry-dropdown">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
   </select>
   <select name="price[]" id="price" class="entry-dropdown">
        <option value="15">$15</option>
        <option value="12.5">$12.5</option>
        <option value="10">$10</option>
        <option value="0">Free</option>
   </select>
 </div>

我的问题是,我想获取结果并以我可以添加所有内容的格式保存它们。

所以它会说明我有多少尺寸,每种尺寸有多少,以及价格。我假设我需要一个多维数组。

我目前有:

 $('#order-submit').click(function(){

var size = [];
var price = [];
var quantity = []; 

$.each($('.entry-dropdown'), function() {

    size.push($(this).val());


});
  console.log(size);

但这给我的只是一个数组:[“XL”,“3”,“15”,“3XL”,“1”,“15”](当我测试它时)

以可用格式获取数据的最佳方法是什么?

我希望这是有道理的! 谢谢

【问题讨论】:

    标签: javascript jquery multidimensional-array


    【解决方案1】:

    您必须遍历每个 dynamic-sale 元素。然后,遍历子元素,并将值添加到子数组中。

    var result = [];                               // <-- Main array
    $(".dynamic-sale").each(function(){
        var individual_result = [];                // <-- "sub"-array
        $(this).find("select").each(function(){
            individual_result.push($(this).val());
        })
        result.push(individual_result);            // <-- Add "sub" array to results
    });
    

    这个方法返回一个数组,由一个带有size, price and quantity的数组组成。

    如果要将这些值放在单独的数组中,请使用:

    var size = [],
        price = [],
        quantity = [];
    $(".dynamic-sale").each(function(){
        var selects = $(this).find("select");
        size.push(selects.eq(0).val());
        price.push(selects.eq(1).val());
        quantity.push(selects.eq(2).val());
    });
    

    【讨论】:

    • 这就是我想要的。现在这很有意义。谢谢!
    【解决方案2】:

    这有点不同,但可能是这样的想法:

    var data = [];
    
    $("#order-submit").click(function () {
        $(".dynamic-sale").each(function () {
            var $saleDiv = $(this);
            data.push({
                size: $saleDiv.children(".size-dropdown").val(),
                amount: window.parseInt($saleDiv.children(".amount-dropdown").val(), 10),
                price: window.parseFloat($saleDiv.children(".price-dropdown").val())
            });    
        });
    });
    

    然后您会得到一个 ArrayObjects,每个代表表中的一行,类似于:

    [
        {size: "3XL", amount: 1, price: 0},
        {size: "M", amount: 7, price: 12.5}
        ...
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2020-07-21
      相关资源
      最近更新 更多