Javascript 根据发票计算运费
考虑到以下情况:我将如何根据用户输入(我已经用id“carries”创建了)创建一个函数来计算carriesJavascript 根据发票计算运费,javascript,jquery,Javascript,Jquery,考虑到以下情况:我将如何根据用户输入(我已经用id“carries”创建了)创建一个函数来计算carries 首先,对代码进行一些改进: 您似乎在多个HTML表行中使用相同的ID进行输入。HTML允许您在每个文档中只使用一次ID。在您的情况下,应该使用类而不是ID 删除所有数字中的逗号。不清楚这是否正确。您是将逗号用作千位分隔符(这样就可以了)还是十进制分隔符(这样就不行了)?这取决于您的本地号码格式 您不需要(自定义)函数roundNumber(),您可以使用Number.toFixed()
首先,对代码进行一些改进:
- 您似乎在多个HTML表行中使用相同的ID进行输入。HTML允许您在每个文档中只使用一次ID。在您的情况下,应该使用类而不是ID
- 删除所有数字中的逗号。不清楚这是否正确。您是将逗号用作千位分隔符(这样就可以了)还是十进制分隔符(这样就不行了)?这取决于您的本地号码格式
- 您不需要(自定义)函数
,您可以使用roundNumber()
例如Number.toFixed()
返回10.toFixed(2)
10.00
- 在
函数中,您再次删除逗号,但在写入每行的update_total()
字段时从未添加它们itemLineTotal
- 我建议您使用一致的编码样式,例如,您有时使用驼峰大小写函数名(
),有时使用下划线(updatePrice()
)update\u total()
carries
输入。由于这在发票上并不常见,我假设这是一个错误,并且在整个发票中只有一个这样的输入
要计算总计,您必须计算所有itemLineTotal
s的总和,然后添加carries
的值。您应该在update\u total()
中执行此操作。我制作了一把小提琴,它展示了一个有效的例子,希望它能帮助:
(也许您必须调整上面提到的十进制和千位分隔符。请参见第10、11、21和25行。另外,请注意JavaScript对浮点数的限制)您想要什么还不清楚?在您使用它的上下文中是什么?它是用户输入表单中的一个附加字段,反过来将更新totalWhat确切地说是$itemRow?它是表行的jQuery对象吗?在这种情况下,您应该考虑使用类而不是ID,因为IDS在整个HTML文档中应该是唯一的(与SytItEnLimeToTe相同)。
/* 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);
};