我有一个静态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/