jQuery dataTables fnDraw()不重绘表

时间:2012-12-06 15:58:44

标签: jquery datatables

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

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

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

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

我重新创建了一个示例here,这里是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();
});​

任何人都可以告诉我哪里出错了吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

问题是你的代码中aaData[row][0].value没有返回任何内容。您可以尝试保留数组并从那里设置总值。在blur事件中,您必须为每个文本框设置适当的值。以下是修改后代码的link