1

ここにいるコードと人々のおかげで、ページにjqueryスクリプトがあり、より大きな関数の一部を呼び出す必要があるところで立ち往生しています。複数の関数に分割する方法がわかりません。動的入力フィールドを作成するとすべてが正しく実行され、いくつかの金額フィールドが合計ボックスに合計されますが、新しい入力ボックスを作成しないと、これらの入力を合計する必要がある部分が得られません。これは、私がこれまでに持っているもののサンプルであり、コードに助けが必要な場所にコメントがあります:

http://jsfiddle.net/A3dnr/

// ** Need help to call just this part when text is entered/changed in any of the 'amount' fields **
   var total = 0;
    $('input[name^="Amount"]').each(function () {
        total += parseInt(this.value, 10) || 0;
        if (this.value.length === 0) this.value = 0;
    });
    $('#Totals').val(total);
4

3 に答える 3

1

合計を計算するコード ブロックは、新しい行の追加ボタンのクリック ハンドラー内にあるため、このボタンが押されたときにのみ呼び出されます。クリック ハンドラの外に移動する必要があります。このフィドルを確認してください。次のような関数に変換しました

        function updateTheTotal(){
           var total = 0;
           $('input.Amount').each(function () {
              total += parseInt(this.value, 10) || 0;
              if (this.value.length === 0) this.value = 0;
           });
           $('#Totals').val(total);
        }

そして、すべての金額フィールドの キーアップで呼び出されます

$('.Amount').on('keyup', updateTheTotal);

注:あなたのコードは、セレクターをキャッシュすることによる最適化の候補です

于 2013-04-19T21:43:05.430 に答える
0

イベントを追加する必要があります。最初に、金額入力ごとに「金額」のクラスを追加します。次に、次のようなものを追加します。

$('table').on('change', '.amount', function() {
  var amount = 0;
  $('.amount').each(function() {
    amount =+ this.value;
  })
  $('#Totals').val(amount);
})

また、金額入力にも type="number" を追加します。

于 2013-04-19T21:42:47.533 に答える