2013-12-20 20 views
0

鑑於以下情況:我將如何根據用戶輸入(我已經使用id「carriage」創建)來計算馬車的功能?在javascript發票上計算馬車

/* Description: Update price function 
* @param: $itemRow - Row Object 
**/ 
var updatePrice = function ($itemRow) { 

    // Calculate the price of the row. Remove and $ so the calculation doesn't break 
    var price = $itemRow.find('#itemPrice').val().replace(",", "") * $itemRow.find('#itemQty').val(); 
    var carriage = $itemRow.find('#carriage').val(); 

    price = roundNumber(price, 2); 
    isNaN(price) ? $itemRow.find('#itemLineTotal').val("N/A") : $itemRow.find('#itemLineTotal').val(price); 
    update_total(); 

}; 


var update_total = function() { 

    var total = 0; 

    $('input#itemLineTotal').each(function (i) { 
    price = $(this).val().replace(",", ""); 
    if (!isNaN(price)) total += Number(price); 
    }); 

    total = roundNumber(total, 2); 

    $('input#invGrandTotal').val('\u20AC' + total); 

}; 
+0

你想要什麼不清楚? – Adil

+2

在您使用它的上下文中,* carriage *是什麼? – Yuck

+1

郵費可能。 – Andy

回答

0

首先,一些改進代碼:

  • 你似乎使用相同的ID在多個HTML錶行輸入。 HTML允許您爲每個文檔只使用一次ID。在你的情況下,你應該使用類而不是ID。
  • 您可以刪除所有數字中的逗號。目前還不清楚這是否正確。你使用逗號作爲千位分隔符(那麼它是好的)或小數分隔符(然後它不是)?這取決於您的本地號碼格式。
  • 您不需要(自定義?)功能roundNumber(),您可以使用Number.toFixed()10.toFixed(2)返回10.00
  • 在您的update_total()函數中,您將再次刪除逗號,但在寫入每行的itemLineTotal字段時,您從未添加逗號。
  • 我建議您使用一致的編碼風格,例如有時使用駝峯函數名稱(updatePrice()),有時使用下劃線(update_total())。

在你的代碼示例中,它看起來像每行有一個carriage輸入。由於這在發票上並不常見,我認爲這是一個錯誤,整個發票只有一個這樣的輸入。

要計算總計,您必須計算所有itemLineTotal s的總和,然後再加上carriage的值。你應該在update_total()這樣做。我創建了一個小提琴表示加工例子,希望幫助:

http://jsfiddle.net/pascalockert/8G7mp/

(也許你必須適應上述小數和千位分隔見線10,11,21和25。另外,。請介意JavaScript對浮點數的限制)