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 没有显示我能看到的任何值得注意的东西。我试过萤火虫,但我对它还是很陌生,所以不能 100% 确定我在那里寻找什么......

谢谢你的帮助!

4

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');calculateSum当您从处理程序调用时in是错误的,remove因为那时this指向window对象而不是已删除的项目。

于 2013-03-12T12:52:53.727 回答