2016-10-21 49 views
0

我尝试使用一个提交按钮添加产品​​以订购购物车。形式的多个表单提交无法正常工作

实施例(其它形式是相同的,其差别由形式的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。如何解决它?

+0

当你推添加到车,你希望所有的页面上有要提交表单的项目?这甚至有可能,你为什么要这么做? – madalinivascu

+0

@madalin,例如我有10种形式。那么我就输入6个数量。之后,我推加入购物车按钮。为了应该是6个产品,但我有更少。 – DenysM

+1

你不能同时提交10人男子哈哈:)) – madalinivascu

回答

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', 
     ], 
    ] 
];