2017-03-02 16 views
0

私のフォームは、ユーザーが、この1なぜonchangeとonblurは時々動作するのですか?

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

のような問題がonBlurイベントかのonChange 1回だけ動作するように「ように見える」ということで値を追加できるフィールドの数が少ないです。要素のextracostが0またはnullとして開始すると、たとえば、50にフォームを変更すると、関数が正常に動作し、合計が50ずつ増加するように見えます。ただし、0に戻すと、何も実行されません。私が-50に再度設定すると、それはその後動作します。そして、その後、

私は50にextracostを設定した場合、60、70、合計は、関連するJavaScriptが私がここにスレッドをたくさん読んだ

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

あり、ここで180

によって上がります同様の問題だが解決策のどれも働いていない。

+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); 

を排除し、小計を計算し、単にそれを再計算するために使用されるすべての個々のフォーム変数を集めていました。

関連する問題