2013-04-17 78 views
1

我有一个PHP简单的程序来计算与另一个文本框的文本框,1年前,现在没有问题,我有我的JavaScript的问题。它不能计算我的文本框。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代码现在不工作?

回答

2

T ry使用onkeyup事件而不是onkeydown。 onkeydown事件在你的文本框的值反映输入的输入之前触发。

+0

我已经试过了。我甚至尝试onfocus,onblur,onchange,但它只是一样.. :( –

+0

你是否得到任何javascript错误? – tilleryj

+0

不,即使当我尝试在jsfiddle它说,与我的JS .. –

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; 
    ... 
+0

它只是相同的...代码不包括我的文本框...有没有从JS的更新,使我的代码失败的工作? –