从输入名称数组创建jquery数组

时间:2013-06-20 07:53:56

标签: jquery ajax

我希望在某处没有回答:)

我正在使用以下表格输入字段,以便客户更新其购物篮中的商品数量:

<input type="text" name="item_qty[<?php echo $product['product_id']; ?>]" value="<?php echo $product['product_qty']; ?>">

因此,购物篮中的每件商品都有一个输入字段,并且有一个提交按钮可以一次性更新所有产品数量。

我的问题是我无法弄清楚如何在jquery中创建所需的数组,以便使用name元素中的数组通过ajax发送(如果可能,我希望保持这样,因为我想确保表单可以工作如果有任何理由无法初始化jquery,则作为正常提交到PHP文件。)

我原以为这个名字应该是篮子阵列中的关键但不确定。任何人都可以建议最好的方法来做到这一点,如果它是保持输入字段现在,我如何得到所需的数据在jquery中创建一个数组。

3 个答案:

答案 0 :(得分:0)

所以,如果我理解你的话,你有一些类似的输出吗?

<input type="text" name="item_qty[0]" value="4">
<input type="text" name="item_qty[1]" value="1">
<input type="text" name="item_qty[2]" value="3">
<input type="text" name="item_qty[3]" value="7">

你想要一个类似的结果:

[{item_qty[0], 4}, {item_qty[1], 1}, ...]

如果这是正确的,我会在这个小提琴中抛出一些东西:http://jsfiddle.net/N6eBZ/

编辑:对于关联数组,您需要创建一个JS对象,请看这个小提琴:http://jsfiddle.net/KyleMuir/N6eBZ/1/

希望这有帮助

答案 1 :(得分:0)

var obj = {};

`$('input')。each(function(index,value){     obj [this.name] = this.value;

});`

答案 2 :(得分:0)

我已经分享了接受的答案并重新编写它以使用$ .map(),这可能比$ .each()更合适。 $ .map()适用于此类应用程序:根据DOM查询的结果构建数组:

var results = $('[name^=item]').map(function() {
    var $this = $(this),
        jsObject = {};

    jsObject[$this.attr('name')] = $this.val();
    return jsObject;
}).get();

Here's a Fiddle.

Here's the documentation for $.map