2011-06-20 88 views
2

我在每一行的一組產品,數量,價格,總喜歡在這樣的畫面:jQuery的 - 計算的總和,總的產品

enter image description here

我想用jQuery自動使它計算每行中的總和和最後的總數,而不必退出頁面。

我對jquery沒有太大的經驗。

我該怎麼做?

非常感謝。

+3

您可以發佈您的標記,所以我們可以看到是如何形成的表?否則就很難給出適當的答案,除了「獲取數量,乘以價格,重複所有行,隨時添加總量」之類的內容之外。 –

+0

需要更多信息,您可以發佈HTML嗎? – User1578

+0

您好, 感謝您的回覆,我想那jqury功能添加到Magento的組合產品,如在本頁面: http://demo.magentocommerce.com/magento-red-furniture-set.html 在此 演示網站,沒有每行的總和值,我必須添加它... 我希望我很清楚,感謝您的幫助:= – Bizboss

回答

1
+1

「數量」必須是一個可愛的輸入文本字段 – Bizboss

+0

亞歷克斯我會把你的代碼在這裏,以及如果我是你,因爲jsfiddle使用節奏鏈接:)有人會在未來迷路時,李nk不工作,或者顯示一些不相關的內容:) – Val

+0

http://jsfiddle.net/QmTNZ/2/ – Val

0

假設你comman意味着是一個小數點(從法國編號系統) 下一個應該與表工作藏漢等。

<ul class="row"> 
    <li class="qty">2</li> 
    <li class="price">2.45</li> 
    <li class="sum"></li> 
</ul> 
<ul class="row"> 
    <li class="qty">3</li> 
    <li class="price">24.5</li> 
    <li class="sum"></li> 
</ul> 
<div id="total"></div> 


//jquery 
$('.row').each(function(i,n){ 
    var sum = (parseFloat($(n).children('.qty')) * parseFloat($(n).children('.price'))); 
    $(n).children('.sum').text(sum) 
}).delay(1).queue(function(){ 
    var total = 0; 
    $('.sum').each(function(i,n){ 
     total += parseFloat($(n).text()); 
    }); 
    $('#total').text(total); 
}); 
3

這裏是你想要做什麼,我覺得小提琴:

http://jsfiddle.net/maniator/qEy3L/

JS:

function getTotal(){ 
    var total = 0; 
    $('.price').each(function(){ 
     total += parseFloat(this.innerHTML) 
    }); 
    $('#total').text(total); 
} 

getTotal(); 

HTML:

<table> 
    <thead> 
     <tr> 
      <th>QTY</th> 
      <th>PRICE</th> 
      <th>SUM</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>2</td> 
      <td>1.25</td> 
      <td class='price'>2.50</td> 
     </tr> 
     <tr> 
      <td>3</td> 
      <td>2.10</td> 
      <td class='price'>6.30</td> 
     </tr> 
     <tr> 
      <td>5</td> 
      <td>10.50</td> 
      <td class='price'>52.50</td> 
     </tr> 
     <tr> 
      <td colspan='2'>Total</td> 
      <td id='total'></td> 
     </tr> 
    </tbody> 
</table> 

UPDATE

下面是可更新的數量版本:http://jsfiddle.net/maniator/qEy3L/5/

JS:

function getTotal(){ 
    var total = 0; 
    $('.sum').each(function(){ 
     total += parseFloat(this.innerHTML) 
    }); 
    $('#total').text(total); 
} 

getTotal(); 

$('.qty').keyup(function(){ 
    var parent = $(this).parents('tr'); 
    var price = $('.price', parent); 
    var sum = $('.sum', parent); 
    var value = parseInt(this.value) * parseFloat(price.get(0).innerHTML||0); 
    sum.text(value); 
    getTotal(); 
}) 

HTML:

<table> 
    <thead> 
     <tr> 
      <th>QTY</th> 
      <th>PRICE</th> 
      <th>SUM</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td><input class='qty' size='1'/></td> 
      <td class='price'>1.25</td> 
      <td class='sum'>0</td> 
     </tr> 
     <tr> 
      <td><input class='qty' size='1'/></td> 
      <td class='price'>2.10</td> 
      <td class='sum'>0</td> 
     </tr> 
     <tr> 
      <td><input class='qty' size='1'/></td> 
      <td class='price'>10.50</td> 
      <td class='sum'>0</td> 
     </tr> 
     <tr> 
      <td colspan='2'>Total</td> 
      <td id='total'></td> 
     </tr> 
    </tbody> 
</table> 
+0

他想計算的價格也:) – Val

+0

@ Val,它已被更新。 – Neal

+0

@Bizboss我更新了一個可編輯的數量 – Neal

0

我知道這是一個古老的,但是我發現尼爾的回答非常有幫助,並且做出了一個分拆,我認爲這可以在各種方面有所幫助的情況。

此版本允許數量和價格的輸入,並且還允許將行動態添加到表格並仍然正常工作。我還添加了四捨五入的組合,因爲我認爲這很可能是一種貨幣計算(如果不需要,只需刪除.toFixed(2)的所有實例)。

的jQuery:

$(document).ready(function() { 
    $("#order-entry").on("keyup", ".form-calc", function() { 
     var parent = $(this).closest("tr"); 
     parent.find(".form-line").val((parent.find(".form-qty").val() * parent.find(".form-cost").val()).toFixed(2)); 
     var total = 0; 
     $(".form-line").each(function(){ 
      total += parseFloat($(this).val()||0); 
     }); 
     $("#total").text(total.toFixed(2)); 
    }); 
}); 

HTML:

<table id="order-entry"> 
    <thead> 
     <tr> 
      <th>Quantity</th> 
      <th>Price</th> 
      <th>Sum</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td><input class="form-calc form-qty" value="1"></td> 
      <td><input class="form-calc form-cost" value="10.00"></td> 
      <td><input class="form-line" value="0" readonly></td> 
     </tr> 
     <tr> 
      <td><input class="form-calc form-qty" value="2"></td> 
      <td><input class="form-calc form-cost" value="5.33"></td> 
      <td><input class="form-line" value="0" readonly></td> 
     </tr> 
     <tr> 
      <td colspan="2">Total</td> 
      <td id="total"></td> 
     </tr> 
    </tbody> 
</table>