2016-10-21 2 views
0

Ich versuche, Produkte zu bestellen, Warenkorb mit einem Senden-Button zu bestellen.Mehrere Formulare reichen nicht korrekt ein

Beispiel Form (andere Formen sind die gleichen, die Differenz von Form von 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> 

Also, auf der Seite unterschiedliche Anzahl von Formen annehmen kann. Ich wähle ein Produkt, gebe eine Menge in Eingaben ein, danach reiche ich alle Formulare mit der Schaltfläche "In den Warenkorb" ein.

Ich habe versucht, 6 Formulare (Produkte) einige Male einzureichen, aber jedes Mal wurden 5 Produkte hinzugefügt (aber nicht 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 - Formen ids Array wo Menge geändert wurde. Wenn id="basic-cart-add-to-cart-quantity-form-37", in idArr stelle ich 37. Ich überprüfte idArr und dort habe ich korrekte IDs. Wie man es löst?

+0

, wenn Sie Auto hinzufügen, drücken Sie die ganze Elemente von der Seite, die Formulare eingereicht haben? Ist das überhaupt möglich, warum willst du das machen? – madalinivascu

+0

@ madalin, zum Beispiel habe ich 10 Formen. dann habe ich 6 Eingänge eingegeben. Danach drücke ich den Add to Cart Button. In Ordnung sollten 6 Produkte sein, aber ich habe weniger. – DenysM

+1

Sie können nicht 10 von zur gleichen Zeit Mann lol :)) – madalinivascu

Antwort

1

Sie können zu diesem Zeitpunkt nicht mehr als ein Formular einreichen, da der Browser alle Absende-Sockets mit Ausnahme des letzten Formulars abbestellt.

Statt mehrere Formen der Verwendung verwenden indizierten Eingänge:

<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> 

In PHP Seite Sie Formulardaten erhalten wird, wie folgt:

var_dump($_POST); 

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