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

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

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

我在表上调用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();
});​


谁能告诉我我要去哪里错了?

谢谢。

最佳答案

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

关于jquery - jQuery dataTables fnDraw()不重新绘制表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13747525/

10-09 19:36