2016-04-18 64 views
0

我有一个将价格乘以数量的jquery。现在我想把这个总数乘以一个客户要付的订单数量。我会在哪里插入我的乘法代码?这是我设想的方程将是total =(price * quantity)* numberoforders。这里是一个什么样的jfiddle我不能雄辩地说明将订单总量乘以jquery中的订单数量

这里是我的代码:

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); 
} 

感谢所有帮助

+0

哪里是为每个项目 –

+0

价格@Wellwisher它的数据下价格=“”,因为IM使用值的项目 – KevinG

+1

您的代码名称是基本上是正确的。只需将最后一行改为'$('#totalDiv')。text(total * parseInt($('。totalquant')。val()|| 0,10));'。 '.totalquant'不是任何其他输入的直接兄弟,并且您希望通过该值获得$('#totalDiv')。text()',以便将括号移到外部。总之,确保你的选择器是正确的,并在分配文本之前执行你的数学*。 [你可以简化你的代码。](https://jsfiddle.net/ey29hx16/) –

回答

2

我做了一些你的代码在这里更改https://jsfiddle.net/k91d23p6/3/

基本上,你必须在forEach之后乘以totaltotalQuant

//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); 
}