【问题标题】:Multiple forms submit not working correctly多个表单提交无法正常工作
【发布时间】:2016-10-21 06:41:57
【问题描述】:

我尝试使用一个提交按钮将产品添加到订单购物车。

表单示例(其他表单相同,只是表单id不同):

<form action="/products" method="post" id="basic-cart-add-to-cart-quantity-form-37" accept-charset="UTF-8">
  <div>
    <input type="hidden" name="nid" value="37">
    <div class="form-item form-type-textfield form-item-quantity">
      <input type="text" id="edit-quantity" name="quantity" value="0" size="5" maxlength="128" class="form-text" style="border-color: rgb(189, 159, 87);">
    </div>        
  </div>
</form>
...
<div class="button basic-cart-add-to-cart-link">Add to cart</div>

所以,页面上可以有不同数量的表格。我选择一个产品,输入数量,然后使用“添加到购物车”按钮提交所有表单。

我尝试提交 6 个表单(产品)几次,但每次都添加了 5 个产品(但不是 6 个)。

$(function(){
  $('.basic-cart-add-to-cart-link').click(function(){
    var speed = 1250;
    for(var i = 1; i <= idArr.length; i++) {
      setTimeout(function(y) {
        var formId = 'form#basic-cart-add-to-cart-quantity-form-' + y;
        var selector = formId + ' ' +'input[name="quantity"]';
        var q = parseInt($(selector).val());
        if(q > 0) {
          saveSelectorInStorage(selector);
          $(formId).submit();
        }
      }, speed*i, idArr[i-1]);
    }
  });
});

idArr - 形成数量已更改的 ids 数组。如果id="basic-cart-add-to-cart-quantity-form-37",在idArr 中我输入了37。我检查了idArr,我有正确的ID。如何解决?

【问题讨论】:

  • 当您推送添加到汽车时,您希望页面中的所有项目都提交表单吗?这有可能吗,你为什么要这么做?
  • @madalin,例如我有 10 个表格。然后我输入了 6 个输入数量。之后我按下添加到购物车按钮。按顺序应该是 6 个产品,但我有更少。
  • 你不能同时提交 10 个,哈哈 :))
  • 我不想提交10个表格,只在我改变数量的地方
  • 您一次只能提交一份表格,请参阅@Justinas 回答

标签: jquery forms


【解决方案1】:

您一次不能提交多个表单,因为浏览器将取消除最后一个表单提交套接字之外的所有表单。

不要使用多个表单,而是使用索引输入:

<div>
    <input type="hidden" name="Product[0]nid" value="37">
    <div class="form-item form-type-textfield form-item-quantity">
        <input type="text" name="Product[0]quantity" value="0" class="form-text">
    </div>        
</div>

<div>
    <input type="hidden" name="Product[1]nid" value="39">
    <div class="form-item form-type-textfield form-item-quantity">
        <input type="text" name="Product[1]quantity" value="1" class="form-text">
    </div>        
</div>

在 PHP 端你会收到如下的表单数据:

var_dump($_POST);

[
    'Product' => [
        [
            'nid' => '37',
            'quantity' => '0',
        ],
        [
            'nid' => '39',
            'quantity' => '1',
        ],
    ]
];

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 2018-10-21
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多