使用动态表单 jquery 创建多维数组
Create multidimentional array with dynamic form jquery
我有以下形式,如果用户单击链接以添加更多项目,我将动态添加更多下拉列表(与这些完全相同(
<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"](当我测试它时(
以可用格式获取数据的最佳方法是什么?
我希望这是有道理的!谢谢
您必须遍历每个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());
});
它有点不同,但像这样的东西可能是一个想法:
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())
});
});
});
然后,您最终会得到一个 Object
s 的Array
,每个 s 代表表中的一行,如下所示:
[
{size: "3XL", amount: 1, price: 0},
{size: "M", amount: 7, price: 12.5}
...
]
相关文章:
- 从多维嵌套json数组创建下拉列表
- 为对象数组创建列表项
- 如何在cycle js中从JSON数组创建组件
- 使用数据数组创建多个类似组件
- 如何在 Angular JS 中从关联数组创建多个复选框
- 如何为给定数组创建跨度列表
- 如何在javascript中使用2个一维数组创建层次结构树
- 从数据对象数组创建折线图
- 从 javascript 数组创建一个 Jquery 数组
- Angular2从数组创建一个列表
- 使用JavaScript's Reduce从对象数组创建数组
- 如何从数组创建 jqtree
- 从字符串数组创建唯一组合数组
- 反应.js通过数组创建循环
- 从数组创建新元素,直到每秒数组为空
- 如何使用其他流的值数组创建流
- JavaScript:从字节数组创建图像资源
- 使用拆分字符串的数组创建一个对象
- 从一组数据或数组创建对象
- 多维数组 - 创建一个表