在HTML中添加数值

时间:2014-10-02 06:07:02

标签: javascript html html5

我有这个HTML和Java脚本。我设置为自动显示这3个输入字段的总量。但如果我使用+(添加),它会给我错误的答案。如果我使用*(乘法)或/(devide。)我工作得很好。任何一个请帮助!

这是我的HTML代码。

</pre>
    <tr>
        <td><input type='number' id='amt1' name='amt1' onkeyup='total_amount();' onKeyUp='return numbersonly(event);' class='form-control'></td>
        <td><input type='number' id='amt2' name='amt2' onkeyup='total_amount();' onKeyUp='return numbersonly(event);' class='form-control'></td>
        <td><input type='number' id='amt3' name='amt3' onkeyup='total_amount();' onKeyUp='return numbersonly(event);' class='form-control'></td>
        <td><input type='number' id='total' name='total' class='form-control' readonly='readonly'></td>
    </tr>
<pre>

继承我的Java脚本......

<script type="text/javascript">

    function total_amount()
    {
        document.getElementById('total').value = document.getElementById('amt1').value + document.getElementById('amt2').value + document.getElementById('amt3').value
    }

    function numbersonly(e){
       var unicode=e.charCode? e.charCode : e.keyCode
       if (unicode!=8 && unicode!=46 && unicode!=37 && unicode!=27 && unicode!=38 && unicode!=39 && unicode!=40 && unicode!=9){ //if the key isn't the backspace key (which we should allow)
           if (unicode<48||unicode>57)
               return false
        }
    }

</script>
</pre>

5 个答案:

答案 0 :(得分:2)

保持简单。使用event delegation和一个keyUp处理程序。不要使用内联处理程序。在使用它进行计算之前,将字段值转换为Number。这是一个例子:

&#13;
&#13;
document.querySelector('table').addEventListener('keyup', sum);

function sum(e) {
  var from = e.target || e.srcElement
     ,isNumericInput = /number/i.test(from.type);
  if (!isNumericInput) {return true;}
  var d = document
     ,inputs = d.querySelector('table').querySelectorAll('[type=number]')
     ,sumfld = d.querySelector('#sum')
     ,sumnow = 0;
  
  [].forEach.call(inputs,
                  function (v) {
                      sumnow += +(v.value); //<= conversion to Number, using +
                   });
  
  sumfld.textContent = sumnow;
}
&#13;
<table>
  <tr>
   <td><input type='number' id='amt1' name='amt1' class='form-control'></td>
   <td><input type='number' id='amt2' name='amt2' class='form-control'></td>
   <td><input type='number' id='amt3' name='amt3' class='form-control'></td>
   <td><b>Total</b>: <span id="sum"></span></td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

使用

document.getElementById('amt1').value|0 +
document.getElementById('amt2').value|0 +
document.getElementById('amt3').value|0 ;

OR

parseInt(document.getElementById('amt1').value) +
parseInt(document.getElementById('amt2').value) +
parseInt(document.getElementById('amt3').value) ;

以便将这些视为数字

答案 2 :(得分:1)

更改你的功能

function total_amount() {
    var amt1 = parseInt(document.getElementById('amt1').value);
    if (isNaN(amt1)) {
        amt1 = 0;
    }

    var amt2 = parseInt(document.getElementById('amt2').value);
    if (isNaN(amt2)) {
        amt2 = 0;
    }

    var amt3 = parseInt(document.getElementById('amt3').value);
    if (isNaN(amt3)) {
        amt3 = 0;
    }

    document.getElementById('total').value = amt1 + amt2 + amt3;
}

答案 3 :(得分:1)

使用parseInt()

function total_amount()
{
    document.getElementById('total').value =parseInt( document.getElementById('amt1').value) +   
parseInt(document.getElementById('amt2').value) + parseInt(document.getElementById('amt3').value)
}

答案 4 :(得分:1)

将字符串(由.value返回)转换为数字的简单解决方案是使用一元+运算符:

function total_amount() { 
    document.getElementById('total').value = 
        +document.getElementById('amt1').value + 
        +document.getElementById('amt2').value + 
        +document.getElementById('amt3').value 
}