0

チェックボックスをクリックしてテーブルの行を削除すると、計算で合計が更新されます。同様の状況で、行の削除イベントに合計計算関数を追加するだけでこれを実行しましたが、この状況では機能しないようです。コード:

//Remove Table Row
$(document).on('click', 'input.removeItem', function(){ 
$(this).closest('tr').remove();
calculateSum();
calculateTotal();
});

// Sum Amt Collected    
$(document).on('keyup', 'input.amtcollected', calculateSum);
function calculateSum() {
var sum = 0;
var currentTable = $(this).closest('table').attr('id');
$('#' + currentTable + ' input.amtcollected').each(function() {
//add only if the value is number
if(!isNaN(this.value) && this.value.length!=0) {
    sum += parseFloat(this.value);
}
});
//.toFixed() method will roundoff the final sum to 2 decimal places
$('#' + currentTable + ' input.sumamtcollected').val(sum.toFixed(2));
}

// Daily Collection Total
$(document).on('keyup', 'input.amtcollected', calculateTotal);
function calculateTotal() {
var sum = 0;
$('input.sumamtcollected').each(function() {
//add only if the value is number
if(!isNaN(this.value) && this.value.length!=0) {
    sum += parseFloat(this.value);
}
});
//.toFixed() method will roundoff the final sum to 2 decimal places
$('input.dailycollectionstotal').val(sum.toFixed(2));
}

ここでフィドルを作成しました:http://jsfiddle.net/tmac187/pQ8WD/

calculateTotal();の後にアラートを出しました。アラートがポップアップしました。なぜ機能しないのかわからない。jslintは、私が見ることができる注目すべきものを何も表示しませんでした。私はfirebugを試しましたが、まだかなり新しいので、そこで何を探しているのか100%わかりません...

ご協力いただきありがとうございます!

4

1 に答える 1

1

1 つの小さなバグ

//Remove Invoice Line
$(document).on('click', 'input.removeItem', function () { 
    var currentTable = $(this).closest('table').attr('id');
    $(this).closest('tr').remove();
    calculateTableSum(currentTable);
    calculateTotal();
});

....

function calculateSum() {
    var currentTable = $(this).closest('table').attr('id');
    calculateTableSum(currentTable);
}

function calculateTableSum(currentTable) {
    var sum = 0;
    $('#' + currentTable + ' input.amtcollected').each(function() {
        //add only if the value is number
        if(!isNaN(this.value) && this.value.length!=0) {
            sum += parseFloat(this.value);
        }
    });
    //.toFixed() method will roundoff the final sum to 2 decimal places
    $('#' + currentTable + ' input.sumamtcollected').val(sum.toFixed(2));
}

デモ:フィドル

var currentTable = $(this).closest('table').attr('id');inは、削除されたアイテムではなくオブジェクトを指しているため、ハンドラーからcalculateSum呼び出すとバグがあります。removethiswindow

于 2013-03-12T12:52:53.727 に答える