1

質問

魔法のために jQuery を使用するフォームがあります。そのフォームにはボタンがありますAdd Account。そのボタンはフィールドAccountを追加しAmount、別のボタンも追加しますRemove Account(推測できる場合は、これら 2 つのフィールドを削除します)。これはすべてうまく機能します...

同じフォームに別のフィールドがあり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 に答える