【发布时间】:2017-08-22 15:18:25
【问题描述】:
我有一个输入字段,用户可以在其中使用点或逗号输入十进制数字(例如:79,99 或 79.99)。当用户用逗号输入数字时,我将其替换为点(然后将该数字发送到远程服务器进行验证)。现在我想在用户使用 toFixed(2) 函数在页脚中输入数字后显示数字,以仅显示前两个十进制数字。我无法让它工作,因为在使用 ParseFloat 将其转换回数字后,逗号消失后的 2 位小数。
例子:
用户在输入字段中输入:79,99,然后将其设置为变量 totalAmount:
$('#amount-1').keyup(function() {
getRefundAmount(1); // This function calls the calcTotalAmount function
})
function calcTotalAmount() {
console.log('calcTotalAmount');
var totalAmount = 0;
var totalRefund = 0;
var rowAmount = 0;
var rowRefund = 0;
for(var i = 1; i < 4; i++ ) {
rowAmount = parseFloat($('#amount-' + i).val());
rowRefund = parseFloat($('#result-' + i).text());
if(!isNaN(rowAmount)) {
totalAmount += rowAmount;
totalRefund += rowRefund;
}
}
var toPay = totalAmount-totalRefund;
totalAmount = totalAmount.toString().replace(/\,/g, '.');
totalAmount = parseFloat(totalAmount).toFixed(2);
$('#footer-refund').text(totalRefund)
$('#footer-total').text(totalAmount)
if (totalAmount == '') {
$('#footer-total').text("0.00");
}
}
页脚中显示的结果是:79.00 而不是 79.99
【问题讨论】:
-
我们可以看看您的输入字段吗?由于您执行 .toString() 我认为您将输入设置为数字,但 79,99(带逗号)不是可识别的数字。
-
也许 Number(totalAmount) 可以解决问题
-
错误在其他地方,这段代码对我来说很好。
-
是的,在我的测试中,输入 type="text" 的代码对我来说工作得非常好,然后执行:console.log(parseFloat(document.getElementById("test").value.toString ().replace(/,/, ".")))
-
您在最后一行中使用的变量 totalRefund 是否应该与 totalAmount 具有相同的值?我假设你复制粘贴了你的代码,请注意你在这里使用了两个不同的变量
标签: javascript jquery replace number-formatting parseint