我知道有一些问题,但我似乎无法解决我的问题。
我正在将.csv文件加载到tablesorter中,但我的一个列是日期(2009年12月23日)。但它们分类为12月2日,12月23日,12月3日,12月31日
有谁知道解决方案? You can see the problem here,它是底部的表格。非常感谢提前!
<script type="text/javascript" charset="utf-8">
$(document).ready(function()
{
$("#tablesorter-demo2").tablesorter({ widgets: ['zebra'] });
}
);
</script>
-
table width =“871”border =“0” cellpadding =“0”cellspacing =“1” 类= “的tablesorter” ID = “的tablesorter-演示” &GT;
$row = 1; $handle = fopen("csv/canadatransactions.csv",
“R”); while(($ data = fgetcsv($ handle,1000,“,”))!== FALSE) { $ num = count($ data); $行++;
if ($row == 2) { echo "<thead>\n<tr>\n"; echo "<th class=\"header\">" . $data[1] .
“\ n” 个; // 名称 回声“”。 $ data [0]。 “\ n” 个; //符号 回声“”。 $ data [2]。 “\ n” 个; // 买卖 回声“”。 $ data [3]。 “\ n” 个; //约会 回声“”。 $ data [4]。 “\ n” 个; // 分享 回声“”。 $ data [5]。 “\ n” 个; // 价钱 回声“”。 $ data [6]。 “\ n” 个; //现金价值
echo "</tr>\n</thead>\n<tbody>"; } else { echo "<tr class=\"even\""; echo ">\n"; echo "<td>" . $data[1] . "</td>\n"; echo "<td>" . $data[0] . "</td>\n"; echo "<td>" . $data[2] . "</td>\n"; echo "<td>" . $data[3] . "</td>\n"; echo "<td>" . $data[4] . "</td>\n"; echo "<td>C$ " . $data[5] . "</td>\n"; echo "<td>C$ " . $data[6] . "</td>\n"; $transactions = $row - 3; } } fclose($handle); ?> </tbody> </table>
答案 0 :(得分:6)
它基于字母数字(ASCII)值进行排序,而不是基于日期值(它也将在十月之前放置十月)。您需要jquery将每个单元格解释为日期值,然后相应地对它们进行排序。如果内置类型检测不起作用,则必须强制使用数据类型。有关详细信息,请参阅http://www.terminally-incoherent.com/blog/2008/09/29/jquery-tablesorter-list-of-builtin-parserssorters/。
答案 1 :(得分:1)
您应该指定列的类型。否则它将按文本排序。您可以通过specyfing sorter
参数:
<table>
<thead>
<tr>
<th>Id</th>
... other columns ....
<th class="{sorter: 'isoDate'}">Date</th>
</tr>
</thead>
<tbody>
... table body ....
虽然我不确定isoDate
是否应该使用分拣机,但是tablesorter还有两个其他分拣机:usLongDate
和shortDate
。你可以尝试哪一个能完成这项任务。
答案 2 :(得分:0)
如果没有任何默认日期排序选项有效,请尝试使用custom parser并将日期转换为等效毫秒表示以进行排序。
$.tablesorter.addParser({
// set a unique id
id: 'dateMS',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
var d = Date.parse(s);
if (isNaN(d)) {
return -1;
}
return d;
},
// set type, either numeric or text
type: 'numeric'
});
$(function() {
$("table").tablesorter({
headers: {
6: {
sorter:'dateMS'
}
}
});
});