Javascript计算输入字段值并显示2位小数位精度

时间:2015-08-28 02:29:19

标签: javascript jquery html html5

我知道这可能是一个重复的问题,但我一直在寻找年龄,并且无法弄清楚为什么这不起作用。

我有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。屏幕截图如下:

enter image description here

解决方案:

使用Firefox时,type =“number”的输入字段似乎不适用于javascript计算。解决方法是将其更改为类型=“文本”如下所述的J Santosh,它可以工作。

3 个答案:

答案 0 :(得分:5)

发现了这个问题。通过<input type='number'>,您可以将其更改为<input type='text'>

Working Fiddle

输入类型编号不接受小数

Reference -1

Reference-2

答案 1 :(得分:1)

这是你想要的吗?如果是这样,那你就非常接近了。你只需要添加

document.getElementById('subtotal').value = parseFloat(subtotal).toFixed(2);

也是你的代码。

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:0)

(2.399).toFixed(2);会给你2.40

但如果你需要2.39试试

parseInt(2.399 * 100)/100