0

我希望这还没有在某个地方得到回答:)

我正在使用以下表单输入字段来允许客户更新他们购物篮中的商品数量:

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

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

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

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

4

3 回答 3

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/

希望这可以帮助

于 2013-06-20T08:31:59.673 回答
0

变量 obj = {};

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

});`

于 2013-06-20T10:02:43.003 回答
0

我已经分叉了接受的答案并将其重写为使用 $.map(),这可能比 $.each() 更合适。$.map() 适用于这种应用程序:从 DOM 查询的结果构建一个数组:

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

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

这是一个小提琴。

这是 $.map 的文档

于 2014-03-05T17:32:00.763 回答