1

问题

我有一个使用 jQuery 进行魔术的表单。在那个表单上有一个按钮Add Account。该按钮附加字段AccountAmount另一个按钮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 上发布一个示例帮助我找到了这个错误,所以如果你想知道的话,这里是实际操作

4

1 回答 1

0

由于没有提供 HTML 代码和动态添加输入的代码,我编辑了一个现有的 Fiddler 以获得动态添加输入字段的总数。

在这个提琴手中,简单的 for 循环用于计算总量。

这是一个可能对您有所帮助的提琴手。

//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);
}
于 2013-09-19T10:21:17.343 回答