使用jquery更新订单上的行总计

时间:2010-08-19 06:35:52

标签: jquery jquery-selectors

我在订单页面上有一个表单,当用户更改数量时,我需要更新行总计。我有总计工作,但无法得到总计,因为我无法弄清楚如何定位正确的元素。

表单由cms生成,因此最终包含在许多无关的div等中......这是每个行项目的简化版本:

       <input type="text" class="text cart_qty" id="Form_OrderForm_Product-1065-qty" name="Product[1065][qty]" value="1" />

        <input type="text" class="text prod_id" id="Form_OrderForm_prod_1065" name="prod_1065" value="1065" />

        <input class="hidden" type="hidden" id="Form_OrderForm_hidden_1065" name="hidden_1065" value="1.45" />

        <span id='Product_1065_Line' class='cart_price_line'>1.45</span>

所以基本上,每当更改.cart_qty输入字段时,都需要更新.cart_price_line。

我的总数是这样的:

$('.cart_qty').keyup(function(){
var $thetotal=0;

$('input.cart_qty').each(function(index) {

 $theqty=$(this).val();
 $thenextindex=$("input").index(this) + 2;
 $theprice=$("input:eq("+$thenextindex+")").val();

 $thelinetotal=$theqty * $theprice;
 $thetotal=$thetotal + $thelinetotal;

});
$("#total_price_curr").html($thetotal).formatCurrency();
$("#Form_OrderForm_totalHidden").val($thetotal);


});

它正在计算订单项,但我无法弄清楚如何在$(“input.cart_qty”)。(...)函数中定位span.cart_price_line。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

那不是this.children("span.cart_price_line")

答案 1 :(得分:0)

我不确定我得到了你要求的东西,但也许这会有所帮助。将其添加到.each()函数

的末尾
var product_id = $(this).attr("id").split("-")[1];
$("#Product_" + product_id + "_Line").html($thelinetotal);

添加了该行的演示:http://jsfiddle.net/7NCdQ/

另外,我重写了它(新的jQuery选择器以获得价格并重命名变量)

$('input.cart_qty').keyup(function(){
    var total = 0;

    $('input.cart_qty').each(function(index) {
        var product_id = $(this).attr("id").split("-")[1];

        var quantity = $(this).val();
        var price = $("#Form_OrderForm_hidden_" + product_id).val();

        var line_total =  price * quantity;
        total += line_total;

        $("#Product_" + product_id + "_Line").html(line_total);
    });

    $("#total_price_curr").html(total);
    $("#Form_OrderForm_totalHidden").val(total);
});

演示:http://jsfiddle.net/7NCdQ/1/