1

我有一个 php 简单的程序来计算一个文本框和另一个文本框,1 年前,现在没有问题,我的 JavaScript 有问题。它无法计算我的文本框。

我的表单代码在这里(没有 html 标签,以最小化这里的代码):

<table>
<tr>
    <td>Tol</td>
    <td>:</td>
    <td><input type="text" maxlength="11" name="tol" onkeydown="calculate()" value="0" /></td>
</tr>
<tr>
    <td>Parkir</td>
    <td>:</td>
    <td><input type="text" maxlength="11" name="parkir" onkeydown="calculate()" value="0" /></td>
</tr>
<tr>
    <td>Joki</td>
    <td>:</td>
    <td><input type="number" maxlength="11" name="joki" onkeydown="calculate();" value="0" /></td>
</tr>
<tr>
    <td>Other</td>
    <td>:</td>
    <td><input type="number" name="other" maxlength="11" onkeydown="calculate();" value="0" /> <input type="text" name="othername" maxlength="50" /> </td>
</tr>
<tr>
    <td>Total</td>
    <td>:</td>
    <td><input type="text" id="subtotal" onfocus="this.value = numberFormat(this.value);" name="subtotal" maxlength="100" value="0" />
        <input type="text" id="totalbox" name="totalbox" maxlength="100" />
    </td>
</tr>
    </table>

和我的 JS 脚本:

function calculate(){
var num1=document.myform.tol.value;
var num2=document.myform.parkir.value;
var num3=document.myform.joki.value;
var num4=document.myform.other.value;

var sum=parseFloat(num1)+parseFloat(num2)+parseFloat(num3)+parseFloat(num4);
document.getElementById('totalbox').value=sum.toString();
document.getElementById('subtotal').value=sum.toString();
}

有人可以更正我的代码还是 JS 的任何更新使我的 JS 代码现在不起作用?

4

2 回答 2

2

尝试使用 onkeyup 事件而不是 onkeydown。onkeydown 事件在您的文本框的值反映正在输入的输入之前触发。

于 2013-04-17T02:24:29.857 回答
1

尝试通过 id 而不是 form.name 引用输入框:

function calculate(){
   var num1=document.getElementById('tol').value;
   var num2=document.getElementById('parkir').value;
   var num3=document.getElementById('joki').value;
   var num4=document.getElementById('other').value;

   var sum=parseFloat(num1)+parseFloat(num2)+parseFloat(num3)+parseFloat(num4);
   document.getElementById('totalbox').value=sum.toString();
   document.getElementById('subtotal').value=sum.toString();
}

将 id 属性添加到您的输入中:

<input type="text" maxlength="11" name="tol" id="tol" onkeydown="calculate()" value="0" />
...

您可能还希望通过在尝试获取值之前检查元素是否存在来使您的代码更加健壮:

function calculate(){
  var fld1 = document.getElementById('tol');
  var num1 = 0;
  if (fld1 && fld1 != 'undefined') num1 = fld1.value;
  ...
于 2013-04-17T02:09:09.320 回答