将总订单乘以jquery中的订单数量

Posted

技术标签:

【中文标题】将总订单乘以jquery中的订单数量【英文标题】:Multiply total orders to quantity of order in jquery 【发布时间】:2016-04-18 17:14:51 【问题描述】:

我有一个将价格乘以数量的 jquery。现在我想将总和乘以客户将下的订单数量。我将在哪里插入我的乘法代码?以下是我设想的等式是total=(price*quantity)*numberoforders。这是我无法雄辩地解释的jfiddle

这是我的代码:

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

感谢所有帮助

【问题讨论】:

每件商品的价格在哪里 @Wellwisher 它在 data-price="" 下,因为我使用的是商品名称的值 你的代码基本是对的。只需将最后一行更改为$('#totalDiv').text(total * parseInt($('.totalquant').val() || 0, 10));.totalquant 不是任何其他输入的直接同级,您希望通过该值将$('#totalDiv').text() 移到外面。简而言之,确保您的选择器是正确的,并且在分配文本之前执行数学运算。 You can simplify your code a lot. 【参考方案1】:

我在https://jsfiddle.net/k91d23p6/3/对您的代码进行了一些更改

基本上,您必须在forEach 之后将total 乘以totalQuant

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

【讨论】:

以上是关于将总订单乘以jquery中的订单数量的主要内容,如果未能解决你的问题,请参考以下文章

订单列表查询SQL,查询出订单的数量和订单详细信息(包括订单中的所有商品)。

jQuery 从变量中取回 NaN 和 [object Object]

产品变体未反映 Django 电子商务项目中订单摘要中的更新数量

jquery点击一组按钮中的一个,跳转至对应页面处理策略。(如点击订单列表中的一个订单,跳转至该订单的详情)

如何通过 WooCommerce 中的时间限制限制每个客户的订单数量

订单确认后如何从订购数量中减去可用数量?