2017-03-02 65 views
0

我的形式有少量字段中,用户可以在这样一个为什么onchange和onblur有时只有工作?

<input name='extracost' type='text' size='25' id='extracost' value='$extracost' onChange='calculate();' > 

问题增加值是与的onblur或只的onChange“似乎”工作一次。如果元素extracost以0或null开始,例如,如果我将它的形式更改为50,则该函数似乎可以正常工作,并且总数将增加50.但是,如果将其设置回0,则它不执行任何操作。如果我再次将它设置为-50,它将随后工作。

如果我设置extracost到50,然后60,然后70,总由180

这里上升是相关的JavaScript

var subtotal = document.getElementById("subtotal").value; 
var extracost = document.getElementById("extracost").value; 
var total = Number(subtotal) + Number(extracost); 
document.getElementById("total").value = total; 

我在这里读很多线程类似的问题,但没有解决方案的工作。

+0

onChange ='calculate();'可以代替onBlur ='calculate();'没有效果。 onmouseup不解决问题 –

回答

0

首先,您的源代码中没有onBlur事件。

此外,尝试分析文本框的值:

var subtotal = parseInt(document.getElementById("subtotal").value, 10); 
var extracost = parseInt(document.getElementById("extracost").value, 10); 
var total = (subtotal) + (extracost); 
document.getElementById("total").value = total; 

我会以为你是在Chrome的问题。最后,onChange和onBlur只在光标离开文本框时才起作用。

+0

parseInt返回NaN –

0

的解决我的问题被消除这种

var subtotal = parseInt(document.getElementById("subtotal").value, 10); 

,并收集所有用于计算分类汇总,并简单地重新计算其个人表单变量中。

相关问题