我有一些代码在数据插入现有行时附加新的表行。
您可以在行动here中看到代码。
在输入产品时,新行将附加到具有唯一输入名称的表格中。
然后要求用户输入价格和数量。
我想要的是两步计算。在输入框Total中,我希望该特定行的总和为price * qty
。其次,我希望div grandtotal
显示所有输入框的总和,所有输入框都是动态的,用户插入的行数。
通常我会使用:
function fill() {
var txt8 = document.getElementById("TextBox8").value;
var txt9 = document.getElementById("TextBox9").value;
document.getElementById("TextBox10").value = txt8 + txt9;
}
但这是静态的静态表,其中名称和ID是已知的。如何使这个工作动态生成表?
道歉,我忘了给你一个小提琴链接:http://jsfiddle.net/yUfhL/230/答案 0 :(得分:2)
要获取ID为linetotal
的所有输入,您可以在jQuery中编写以下内容:
$('input[id^=linetotal]')
现在,要计算总数,只需迭代集合:
var total = 0;
$('input[id^=linetotal]').each(function() {
total += parseInt(this.value, 10) || 0;
});
您的输出,然后:
$('#grandtotal').text(total);
修改强>
要首先计算每一行的行总数,您可以像这样迭代它们:
$('table.order-list tr').each(function() {
var price = parseInt( $('input[name=price]', this).val(), 10 );
var qty = parseInt( $('input[name=qty]' , this).val(), 10 );
$('input[id^=linetotal]', this).val(price * qty);
});
当然,您不必一直迭代所有行。在更改事件中,您只对当前行感兴趣,可以通过$(this).closest('tr')