我正在尝试创建一个表单,该表单将基于多个输入显示总计。每个输入将乘以某个因子。目前我有:
<form method="post"
oninput="total.value= parseInt(a.value*1.5)+parseInt(b.value*2)+parseInt(c.value*1.5).toFixed(2)">
<input type="number" id="a" name="a" value="0" min="0" step="1.0">
<input type="number" id="b" name="b" value="0" min="0" step="1.0">
<input type="number" id="c" name="c" value="0" min="0" step="1.0">
<output name="total" for="a b c"></output>
</form>
运行此命令时,前两个输入的输出为10或15的倍数。在第一个输入中选择“ 1”应输出“ 1.5”,而应输出“ 10”,而选择“ 2”则输出“ 30”而不是“ 3”。在最后一个输入中选择“ 1”至少会输出“ 1”而不是“ 10”,但应为“ 1.5”。
我该如何解决这个问题,以免输出不相乘且结果准确?
答案 0 :(得分:1)
我认为您需要先将值转换为数字,就像这样(+ a.value与Number(a.value)相同):
<form method="post"
oninput="total.value= ((+a.value*1.5)+(+b.value*2)+(+c.value*1.5)).toFixed(2)">
<input type="number" id="a" name="a" value="0" min="0" step="1.0">
<input type="number" id="b" name="b" value="0" min="0" step="1.0">
<input type="number" id="c" name="c" value="0" min="0" step="1.0">
<output name="total" for="a b c"></output>
</form>