2016-04-18 8 views
0

Ich habe eine jquery, die den Preis mit der Menge multipliziert. Jetzt wollte ich die Summe davon multiplizieren, wie viele Bestellungen ein Kunde machen würde. Wo würde ich meinen Multiplikationscode einfügen? Hier ist, wie ich mir die Gleichung vorgestellt hätte wäre Gesamt = (Preis * Menge) * NummeroForders. Hier ist ein jfiddle von dem, was ich kann nicht eloquent erklärenMultipliziere die Gesamtbestellungen mit der Bestellmenge in jquery

Hier ist mein Code:

HTML

<form> 
    <ul> 
     <li> 
      <label> 
       <input type="checkbox" name="drink[]" class="drink" value="DrinkName1" data-price="12" /> Sample Item 
       <input min="0" max="5" type="number" class="quantity" name="quantity" value="1" /> 
      </label> 
     </li> 

     <li> 
      <label> 
       <input type="checkbox" name="drink[]" class="drink" value="DrinkName2" data-price="6" /> Sample Item 
       <input min="0" max="5" type="number" class="quantity" name="quantity" value="1" /> 
      </label> 
     </li> 

     <li> 
      <label> 
       <input type="checkbox" name="drink[]" class="drink" value="DrinkName3" data-price="4" /> Sample Item 
       <input min="0" max="5" type="number" class="quantity" name="quantity" value="1" /> 
      </label> 
     </li> 

      <li> 
      <label> 
      Quantity of Orders 
       <input min="0" max="5" type="number" class="totalquant" name="quantity" value="1" /> 
      </label> 
     </li> 
    </ul> 


</form> 

<p>Total</p> 
<div id="totalDiv">0</div> 

JQuery

$('.quantity, .drink').change(calculateTotal); 

function calculateTotal() { 
    var $form = $(this).closest('form'), total = 0; 
    $form.find('.drink:checked').each(function() { 
     total += $(this).data('price') * parseInt($(this).next('.quantity').val() || 0, 10); 
    }); 
    $('#totalDiv').text(total)* parseInt($(this).siblings('.totalquant').val() || 0, 10); 
} 

schätzen alle Hilfe

+0

wo ist der Preis für jedes Element –

+0

@Wellwisher es unter Daten Preis ist = „“, weil im den Wert für den Namen des Elements – KevinG

+1

Der Code ist im Grunde richtig verwendet wird. Ändern Sie einfach die letzte Zeile in '$ ('# totalDiv'). Text (total * parseInt ($ ('. Totalquant'). Val() || 0, 10));'. '.totalquant' ist nicht direkt mit den anderen Eingaben verwandt und Sie möchten' $ ('# totalDiv'). text() 'um diesen Wert verschieben, also die Klammern nach außen bewegen. Kurz gesagt, stellen Sie sicher, dass Ihre Selektoren richtig sind und führen Sie Ihre Berechnungen durch, bevor Sie den Text zuweisen. [Sie können Ihren Code sehr vereinfachen.] (Https://jsfiddle.net/ey29hx16/) –

Antwort

2

ich einige gemacht haben Änderungen an Ihrem Code hier https://jsfiddle.net/k91d23p6/3/

Grundsätzlich müssen Sie die total durch die totalQuant nach der forEach multiplizieren.

//query the DOM once, instead of on every change 
var $form = $('form'); //on a real app it would be better to have a class or ID 
var $totalQuant = $('.totalquant', $form); 
var totalDiv = $('#totalDiv'); 
$('.quantity, .drink, .totalquant', $form).change(calculateTotal); 

function calculateTotal() { 
    var total = 0; 
    $form.find('.drink:checked').each(function() { 
    total += $(this).data('price') * parseInt($(this).next('.quantity').val() || 0, 10); 
    }); 
    var totalQuant = total * parseInt($totalQuant.val() || 0, 10); 
    totalDiv.text(totalQuant); 
}