Onchange事件在编辑同一字段后重复计算
onchange event repeats calculation after editing the same field
我有一个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,那么total
5 * 2 = 10
from javascript function
现在如果我将数量编辑为1,而不是5*1 = 5,我将得到10 + (5*1)= 15 !)我该如何预防呢?
为旧的total设置隐藏值
<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 ) ;
设置隐藏字段
<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 = '';
相关文章:
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- xpages:计算字段中的HTML表
- 实时计算字段ExtJS
- javascript计算字段比较算法
- 获取javascript计算字段时遇到问题
- AngularJS从隐藏字段中计算字段
- 计算字段淘汰相同的值
- 在 JavaScript 或 PHP 中按计算字段对数组进行排序
- Rails3/随着输入的变化而动态地重新计算字段
- 计算字段的Jquery if语句需要帮助
- 淘汰:自定义绑定更新不触发计算字段
- 语法防止使用@DbLookup填充计算字段
- 使用Ajax计算字段
- 敲除JS中每个带有计算字段的数据绑定
- 创建计算字段的报价摘要
- 使用Jquery或Javascript动态计算字段的划分
- 如何使xPages计算字段日期转换器只显示今天的时间
- 如何调用JQuery函数在按钮点击后计算字段
- SharePoint 列表,以编辑窗体显示计算字段
- 不同选项卡面板上的计算字段