使用jQuery tablesorter排序毫米/日的日期
-
19-08-2019 - |
题
我使用的延tablesorter插件进行排序表。在我列在我的表显示了日在毫米/日的格式。
<tr>
<td class="col-name">...</td>
...
<td rel="2000" class="col-dob">10/00</td>
...
</tr>
<tr>
<td class="col-name">...</td>
...
<td rel="1986" class="col-dob">11/86</td>
...
</tr>
注:
- 每个单元都有一个独特的一类
- 显示日期在毫米/日格式
- 细胞与日收到该年以及
我。如下:
// add parser through the tablesorter addParser method
$.tablesorter.addParser({
// set a unique id
id: 'user-birthdate',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
// format your data for normalization
var dateSplit = s.split('/');
if(2 !== dateSplit.length)
return 0;
return new Date(dateSplit[1], dateSplit[0], 1);
},
// set type, either numeric or text
type: 'numeric'
});
myClass.init = function() {
$('.module .user table').tablesorter({
sortList: [[0,0]],
widgets: ['zebra'],
headers: {
5: {
sorter:'user-birthdate'
}
}
});
}
myClass.init();
我的问题是,tableSorter解释00为1900年而不是2000年,因此排序的数据是不正确的。
任何线索我如何能解决这个问题?我使用jQuery1.2.6和最新版本的tablesorter.
解决方案
该tablesorter文件往往是不无益的,我已经找到。它的 看起来 喜欢说很多,但是缺乏详细信息。
在这种情况下,它不会告诉你的签名功能用于分析程序。幸运的是,你可以读 该unminified码 找到它。
有我们发现的 metadata
分析器不会这样的:
format: function(s,table,cell) {
这意味着你可以调整格式的方法:
format: function(s, table, cell) {
// format your data for normalization
var dateSplit = s.split('/');
var year = $(cell).attr('rel');
if(2 !== dateSplit.length)
return 0;
return new Date(year, dateSplit[0], 1);
},
或至少是类似的。我还没有实际测试了这一点。但它至少应该非常接近。
其他提示
我想你会发现你的问题是新的构造和2位数的年串你是通过不歧: new Date(dateSplit[1], dateSplit[0], 1);
我不认为你可以(地)获得可靠的基础上s的分析程序。不s包含的全部内容的细胞?你可以做一些事情在的单元格中的数据,如: <span style="display : none">CC</span>MM/YY
, ,条的标签,然后结合与CC YY在你的分析?
不隶属于 StackOverflow