2013-06-03 66 views
0

後重復計算我有一個JavaScript如下:onchange事件編輯同一字段

function calculateBill(id,price) 
{ 

var t = document.getElementById('total').value; 


var qty = document.getElementById('qty_'+id).value; 

var total = qty * price; 


var tcost = Number(t) + Number(total); 

document.getElementById('total').value = ''; 

//tcost = parseFloat(tcost); 

document.getElementById('total').value = tcost.toFixed(0) ; 
} 

該功能被稱爲在一個onchange事件 <input type="text" id = "qty_<?php echo $i2; ?>" name="qty_<?php echo $i2; ?>" onchange="calculateBill('<?php echo $i2; ?>','<?php echo round($r2[$i2]['ret_price'],2); ?>')" /> 自一個onchange事件,它計算的總成本時,我更改值。 現在我的問題是,當我想更新之前輸入的值時,它會計算新的總金額。

(假設先前值數量是2,速率爲5,從而總

5 * 2 = 10

因此總計爲10從javascript函數現在

如果我編輯控管數量爲1 ,5 * 1 = 5,我會得到10 +(5 * 1)= 15! ) 我該如何防止這種情況?

回答

0

有一個隱藏字段

<input type="hidden" id="hidden_total"/> 

使隱藏字段值有初始總價值形式加載時。

現在,在函數內部,使用hidden_​​total值添加​​並在您完成計算後將其設置爲0。

function calculateBill(id,price) 
{ 
var t = document.getElementById('hidden_total').value; 
var qty = document.getElementById('qty_'+id).value; 
var total = qty * price; 
var tcost = Number(t) + Number(total); 
document.getElementById('total').value = tcost.toFixed(0) ; 
} 

根據您的需要,您可能需要在計算後更新隱藏字段的值。在這種情況下,在最後一行添加以下內容;

document.getElementById('hidden_total').value = ''; 
+0

那麼它只輸出個人總數,其中我需要計算當前總金額! – Nitish

+0

什麼是current_total_amount?它是(價格*數量)或oldTotal +(價格*數量)? –

+0

在我的函數中't =上一個總成本','total =當前行的價格','tcost =上一個價格+當前行價格' – Nitish

0

使用隱藏的價值老總像

<input type="hidden" id="old_total" value="<?=$total?>"> 

只是爲了計算使用ID old_total

var t = document.getElementById('old_total').value; 

,並顯示輸出使用ID total

document.getElementById('total').value = tcost.toFixed(0) ;