0

我有一个包含列总计和行总计的表格。我设置了当有人在输入字段中输入数字时,它会在键盘输入和页面加载时计算它们。列在页面加载时重新计算就好了,但行正在重置为零。

// Calculate Sum Of Rows
$(function() {
    $('input').live('keyup', newSum);
    newSum();
});
function newSum() {
    var sum = 0;
    var thisRow = $(this).closest('tr');
    //iterate through each input and add to sum
    $(thisRow).find("input:not(.ignore):not(.description):not(.miles)").each(function() {
            val = parseFloat(this.value);
            sum += isNaN(val) ? 0 : val;   
    });
    //change value of total
    $(thisRow).find(".sumtotalclaimed").html(sum);
}

这是列的代码,它完美地工作(重新计算页面加载):

// Calculate Sum Of Columns
$(function() {
    $('input.miles').live('keyup', calculateSum1);  
    calculateSum1();
} );
function calculateSum1() {
    var sum = 0;
    //iterate through each textboxes and add the values
    $("input.miles").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
    $("#summiles").html(sum);
}

我认为这就像输入 newSum(); 一样简单。在函数中,但这不起作用。任何想法我做错了什么?

谢谢!

4

1 回答 1

1

您没有this页面加载。所以找不到thisRow。违规行是var thisRow = $(this).closest('tr');

我过去这样做的方法是找到有问题的第一个输入并触发事件,从而使用完全膨胀的事件调用该方法。

例如,不是newSum();直接调用,而是 call $('input').first().trigger('keyup')which 会自动调用该newSum函数。

编辑:http: //jsfiddle.net/DTPZQ/3/

于 2013-01-23T18:38:48.647 回答