我在论坛上搜索过,似乎找不到与我类似的情况,所以我想知道这里的某人是否有可能提供帮助。
我有一个动态生成的表,其中包含一个包含“发布日期”的列,我希望按日期排序。问题是此列中的日期值前面是括号中的版本数。
此列中的可能值将是带有AM / PM指示符的完整日期和时间戳,前面是数字或版本,或单词“无”。例如,这些是数据表中的一些实际值:
None
[1] 1/24/2008 5:53:35 PM
[1] 7/31/2012 11:32:50 AM
[10] 3/29/2013 2:59:04 PM
[3] 12/17/2014 2:43:27 PM
[1] 1/9/2015 6:48:31 PM
[4] 1/9/2015 7:02:09 PM
[4] 1/30/2015 11:25:20 AM
[2] 12/27/2016 12:32:02 PM
[2] 11/16/2017 11:04:22 AM
由于日期之前的其他字符,内置排序无法正常运行。我在我的代码中添加了以下参数,以便为列分配自定义解析器,这是表中列出的第三个:
headers: 2: { sorter: 'DateParser' }
而且,这是我的解析器删除主要字符的代码,只留下日期和时间:
$.tablesorter.addParser({
id: 'DateParser',
is: function(s) {
return false;
},
format: function(s) {
var datesort;
if (s != "None") {
var livereleasedate = s.split(']');
var datetime = livereleasedate[1].trim();
console.log(datetime);
datesort = datetime;
}
else {
datesort = s;
}
return datesort;
},
type: 'text'
});
不幸的是,这仍然无法正常工作。似乎月份和日期值按正确顺序排序,但字符串的其余部分不是。当我点击列标题对值进行排序时,我得到了这个:
[1] 1/9/2015 6:48:31 PM
[4] 1/9/2015 7:02:09 PM
[1] 1/24/2008 5:53:35 PM
[4] 1/30/2015 11:25:20 AM
[10] 3/29/2013 2:59:04 PM
[1] 7/31/2012 11:32:50 AM
[2] 11/16/2017 11:04:22 AM
[3] 12/17/2014 2:43:27 PM
[2] 12/27/2016 12:32:02 PM
None
有关如何解决此问题的任何建议?
提前致谢。
答案 0 :(得分:0)
尝试parser-date-extract.js
文件中提供的extractMMDDYYYY
解析器。此解析器应使用原始tablesorter ... fork of tablesorter
$(function() {
$('table').tablesorter({
theme: 'blue',
headers: {
0: { sorter: "extractMMDDYYYY" }
}
});
});