我有一个使用jQuery进行魔术的表单。在该表单上是一个按钮Add Account
。该按钮会添加字段Account
和Amount
以及另一个按钮Remove Account
(如果您可以猜测,则删除这两个字段)。一切都很好......
在同一表单上还有另一个字段Salary
,我想将其与所有Amount
字段的总和进行比较。问题是当我使用jQuery的$.each()
遍历Amount
字段时,它只识别加载页面时DOM中存在的字段,而不是新添加的字段。
如何迭代这些追加的Amount
字段? (或者也许最好还是这样做?)
我现在在做什么:
$(document).ready(function(){
$('#form').on('keyup', '.amount', balanceAmountsWithSalary);
});
var balanceAmountsWithSalary = function(){
var salary = parseInt($('#salary').val(),10);
var total = 0;
$('#accounts .account').each(function(){
var amount = parseInt($(this).find('.amount').val(),10);
total += amount;
});
if (total === salary) {
$('#accounts .account').each(function(){
// Do some stuff to each input.amount located in div.account
});
} else {
$('#accounts .account').each(function(){
// Do some BAD stuff to each input.amount located in div.account
});
}
}
谢谢!
因此,在添加帐户事件中,问题是一个简单的错误,因此在开始时包含其余代码可能会更有帮助。我错误地标记了我的容器类,只在附加项的名称中添加了“s”。在任何情况下,这些评论!在jsFiddle上发布示例帮助我找到了这个错误,所以here is the thing in action以防万一你想知道。
答案 0 :(得分:0)
由于未提供动态添加输入的HTML代码和代码,我编辑了现有的Fiddler以获得动态添加输入字段的总数。
在这个小提琴手中,简单的for循环用于计算总金额。
Here is a fiddler which might help you.
//button click get total
$('#GetTotal').click( function(event){
var tableID = "NewInvoiceTable";
GetTotalAmount(tableID);
return false;
});
//Get total
function GetTotalAmount(tableID)
{
var i = $('#' + tableID + ' tr').length;
alert("Total Rows -" + i);
var TotAmt = 0;
for(j=0;j<i;j++)
{
TotAmt += parseInt($('#TotalInline-' + j).val());
}
alert("Total Amount - " + TotAmt);
}