Я вычисляю 2 поля в форме со значениями, но в некоторых случаях кажется, что это не работает. Вот мой джаваскрипт. Я добавляю $oneTimeCostField
и $recurringTotalCostField
, чтобы получить значение в $totalRetailAmountField
. Вот результат, который я получаю, когда добавляю, скажем, 1555,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();
});
Это связано с тем, что parseFloat() преобразует строку «1555,00» в число 1. Чтобы преобразовать его в правильное число с плавающей запятой, оно должно содержать только одну точку.
console.info(parseFloat("1.555"));
Вам нужно удалить запятые перед синтаксическим анализом:
var result = parseFloat(num1.replace(/,/g, '')) + parseFloat(num2.replace(/,/g, ''));
аналогичный вопрос по этой ссылке Удалить запятые из строки с помощью JavaScript
Спасибо, вы можете исправить мой код, если увидите что-то не так?