3

我有一个静态 HTML 表,其中包含来自不同供应商的零件的价格和描述。

该表包含一列文本框,供用户针对特定零件输入数量,其想法是然后计算供应商的价格,以便他们可以看到最便宜的。

我在 dataTables fnFooterCallback 函数中有一些逻辑可以生成总数,所以当数量 texboxes 的值发生变化时,我试图让表重绘(并因此更新页脚中的总数)。

我在表格上调用 fnDraw() 的输入上注册了一个 blur() 处理程序,但它似乎没有做任何事情。

我在这里重新创建了一个示例,这里是 Javascript:

var $productsTable = $("table#products").dataTable({
    bFilter: false,
    bPaginate: false,
    bSort: false,
    bInfo: false,
    fnFooterCallback: function (nRow, aaData, iStart, iEnd, aiDisplay) {
        // For every column after the qty and desc colums
        for (var column = 2; column < aaData[0].length; column++) {
            var columnTotal = 0;

            // Sum every row into a column total
            for (var row = 0; row < aaData.length; row++) {
                var quantity = aaData[row][0].value || 0;
                columnTotal += aaData[row][column] * quantity;
            }

            // * and / by 100 to round to 2 decimals
            nRow.cells[column].innerText = Math.round(columnTotal * 100) / 100; 
        }
    }
});

$("input[data-qty]").blur(function () {
    // Example at http://datatables.net/api indicates that this should be enough?
    $productsTable.fnDraw();
});​

谁能告诉我哪里出错了,好吗?

谢谢你。

4

1 回答 1

3

问题是在您的代码aaData[row][0].value中不返回任何内容。您可以尝试保留一个数组并从那里设置总值。如果blur您必须为每个文本框设置适当的值。这是修改后的代码的链接。

于 2012-12-06T18:36:54.687 回答