我有一个javascript如下:
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
因此javascript函数的总数为10
现在如果我将quanity编辑为1,输入5 * 1 = 5,我将获得10 +(5 * 1)= 15! ) 我怎么能阻止这个?
答案 0 :(得分: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 = '';
答案 1 :(得分: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 ) ;