0

追加および削除できるフィールドのグループがあるフォームがあります。これらのフィールドの1つには、合計を生成するために追加される一連の数値が含まれています。あなたはここでこれの例を見ることができます:http://jsfiddle.net/beehive/HGJck/

これが私の問題です。フォームが最初に読み込まれるときに別の数値を選択しても合計は変わらず、フィールドのグループは1つだけです(何も追加されていません)。フィールドを追加または削除した後にのみ変更されます。どうすればこれを修正できますか?

$(document).ready(function() {
/* Add & Remove */
var removeButton = "<button id='remove'>Remove</button>";
$('#add').click(function() {
    $('div.container:last').after($('div.container:first').clone());
    $('div.container:last').append(removeButton);

    /* Sum */
    $(".number").change(function() {
        var combined = -10;
        $(".number").each(function() {
            combined += parseInt(this.value);
        });
        $("#sum").html(combined);
    }).trigger("change"); 

    return false;

});

$('#remove').live('click', function() {
    $(this).closest('div.container').remove();
});

});​
4

1 に答える 1

0

合計計算を独自の関数に移動し、結合を -10 ではなく 0 に設定しました: jsFiddle の例

/* Add & Remove */
var removeButton = "<button id='remove'>Remove</button>";
$('#add').click(function() {
    $('div.container:last').after($('div.container:first').clone());
    $('div.container:last').append(removeButton);
    sum();
    return false;
});

$('#remove').live('click', function() {
    $(this).closest('div.container').remove();
    sum();
});

function sum() {
    /* Sum */
    $(".number").change(function() {
        var combined = 0;
        $(".number").each(function() {
            combined += parseInt(this.value);
        });
        $("#sum").html(combined);
    }).trigger("change");
}​
于 2012-07-20T17:15:44.603 に答える