我知道这可能是一个重复的问题,但我一直在寻找年龄,并且无法弄清楚为什么这不起作用。
我有3个输入字段,小计,增值税和总计:我希望能够在小计输入值时填充VAT和Total inpur字段,并显示2个小数位。所以:
4将是4.00 4.5将是4.50
输入字段的HTML代码:
<input name="subtotal" id="subtotal" type="number" maxlength="20" min="0" placeholder="00.00" onchange="vatCalculation();" />
<input name="vat" id="vat" type="number" maxlength="20" min="0" placeholder="00.00" readonly="true" />
<input name="total" id="total" type="number" maxlength="20" min="0" placeholder="00.00" readonly="true" />
我目前的javascript代码是:
function vatCalculation() {
var subtotal = document.getElementById('subtotal').value;
var vat = parseFloat(parseFloat(subtotal) * parseFloat(0.2)).toFixed(2);
var total = parseFloat(parseFloat(subtotal) + parseFloat(vat)).toFixed(2);
document.getElementById('vat').value = vat;
document.getElementById('total').value = total;
}
我无法看到我哪里出错了。当我在'subtotal'input字段中输入10时,'VAT'和'Total'字段变为2和12.但我希望它们显示2.00和12.00。屏幕截图如下:
解决方案:
使用Firefox时,type =“number”的输入字段似乎不适用于javascript计算。解决方法是将其更改为类型=“文本”如下所述的J Santosh,它可以工作。
答案 0 :(得分:5)
发现了这个问题。通过<input type='number'>
,您可以将其更改为<input type='text'>
输入类型编号不接受小数
答案 1 :(得分:1)
document.getElementById('subtotal').value = parseFloat(subtotal).toFixed(2);
也是你的代码。
function vatCalculation() {
var subtotal = document.getElementById('subtotal').value;
var vat = parseFloat(parseFloat(subtotal) * parseFloat(0.2)).toFixed(2);
var total = parseFloat(parseFloat(subtotal) + parseFloat(vat)).toFixed(2);
document.getElementById('subtotal').value = parseFloat(subtotal).toFixed(2);
document.getElementById('vat').value = vat;
document.getElementById('total').value = total;
}
&#13;
<input name="subtotal" id="subtotal" type="text" maxlength="20" min="0" placeholder="00.00" onchange="vatCalculation();" />
<input name="vat" id="vat" type="text" maxlength="20" min="0" placeholder="00.00" readonly="true" />
<input name="total" id="total" type="text" maxlength="20" min="0" placeholder="00.00" readonly="true" />
&#13;
答案 2 :(得分:0)
(2.399).toFixed(2);
会给你2.40
但如果你需要2.39试试
parseInt(2.399 * 100)/100