鉴于以下内容:我如何根据用户输入(我已使用id“carriage”创建)来创建一个计算运输的函数?
/* 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 :(得分:0)
首先,对代码进行一些改进:
roundNumber()
,您可以使用Number.toFixed()
,例如10.toFixed(2)
返回10.00
update_total()
功能中,您再次删除逗号,但在写入每行itemLineTotal
字段时,您从未添加逗号。updatePrice()
),有时候是下划线(update_total()
)。在您的代码示例中,看起来每行有一个carriage
输入。由于这在发票上并不常见,我认为这是一个错误,整张发票中只有一个这样的输入。
要计算总计,您必须计算所有itemLineTotal
的总和,然后添加carriage
的值。你应该在update_total()
中做到这一点。我创建了一个小提琴,显示了一个工作示例,希望有所帮助:
http://jsfiddle.net/pascalockert/8G7mp/
(也许您必须调整上面提到的小数和千位分隔符。请参阅第10,11,21和25行。另外,请注意JavaScript对浮点数的限制)