我的tablesorter表没有正确排序日期和空字段。
我希望将空字段视为零,并将其分组在顶部/底部。相反,我在它们下面会有一些日期。
$('table').tablesorter({
widthFixed: true,
// sort on the last name in ascending order
sortList: [
[2, 0]
],
dateFormat: "ddmmyyyy",
emptyTo: "zero",
sortInitialOrder: "desc",
headers: {
3: {
sorter: "shortDate"
},
4: {
sorter: "shortDate"
},
5: {
sorter: "shortDate"
},
6: {
sorter: "shortDate"
}
},
textExtraction: {
3: function (n, t, c) {
return $(n).attr('data-date');
},
4: function (n, t, c) {
return $(n).attr('data-date');
},
5: function (n, t, c) {
return $(n).attr('data-date');
}
},
widgets: ['zebra', 'columns']
});
查看小提琴here。使用“出生日期”排序'列。
答案 0 :(得分:1)
“shortDate”解析器将所有日期转换为以毫秒为单位的时间,以进行日期比较(使用运算符或日期范围与过滤器小部件)并更轻松地排序日期。为此,它使用了javascript函数getTime()
:
getTime方法返回的值是自1970年1月1日00:00:00 UTC以来的毫秒数。
因此,您注意到的问题是因为非日期单元格被视为具有零值,而未正确排序的日期是日期“1/1/1930”。在javascript控制台中输入此日期,您将看到以下结果:
new Date('1/1/1930').getTime()
// returns -1262282400000
请记住,这是自1970年1月1日以来的时间,所以时间会返回一个负数,当然小于零。
最简单的解决方案是将emptyTo
选项设置为"min"
,将任何空单元格的值设置为最大负数(demo):