我正在计算带有值的表单上的2个字段,但在某些情况下似乎不起作用。这是我的JavaScript。我要添加$oneTimeCostField
和$recurringTotalCostField
,以将值添加到$totalRetailAmountField
中。这是当我添加说1,555.00 + 566.00 =值是567.00(?)时得到的结果。知道我在做什么错吗?在某些情况下,当值较低时,它可以正常工作。谢谢,很困惑
var $recurringCostField = $('#am_attribute_campaign_addon_monthly_cost_value');
var $recurringTotalCostField = $('#am_attribute_campaign_addon_total_monthly_cost_value');
var $totalRetailAmountField = $('#am_oie_string_total_monthly_cost_value');
var $oneTimeCostField = $('#am_attribute_campaign_addon_one_time_cost_value');
function calcVal() {
var num1 = $oneTimeCostField.val();
var num2 = $recurringTotalCostField.val();
var result = parseFloat(num1) + parseFloat(num2);
if (!isNaN(result)) {
$totalRetailAmountField.val(result.toFixed(2));
}
}
calcVal();
$oneTimeCostField.on("keydown keyup", function() {
calcVal();
});
$recurringTotalCostField.on("keydown keyup", function() {
calcVal();
});
答案 0 :(得分:2)
这是因为 parseFloat()将字符串“ 1,555.00”转换为数字1。 要将其转换为适当的浮点数,只需要包含一个点即可。
console.log(parseFloat("1.555"));
答案 1 :(得分:2)
在解析之前,您需要删除逗号:
var result = parseFloat(num1.replace(/,/g, '')) + parseFloat(num2.replace(/,/g, ''));