在tablesorterk中使用datepicker时,例如This Example,它说:
// add any of the jQuery UI Datepicker options here (http://api.jqueryui.com/datepicker/)
我们可以假设它包含dateFormat
但是由于某种原因,唯一有效的dateFormat是示例中的默认值。
作品
dateFormat : 'M dd, yy'
// comparison: Oct 13, 2013
dateFormat : 'M dd, yy'
// comparison Sep 22, 2013
不起作用
dateFormat : 'D M dd'
// comparison: Fri Oct 04
dateFormat : 'M dd'
// comparison Sep 22
示例:
JQuery的
$(function() {
$("table").tablesorter({
widthFixed : true,
widgets: ["filter"],
widgetOptions : {
filter_formatter : {
0 : function($cell, indx){
return $.tablesorter.filterFormatter.uiDateCompare( $cell, indx, {
dateFormat : 'D, M dd, yy',
changeMonth : true,
changeYear : true,
compare : '='
});
}
}
}
});
});
HTML
<table class="tablesorter">
<thead>
<tr>
<th data-placeholder="Sort By Date">Date (one input; greater than)</th>
</tr>
</thead>
<tbody>
<tr><td>Wed, Jun 26, 2013</td></tr>
<tr><td>Wed, Aug 21, 2013</td></tr>
<tr><td>Sun, Oct 13, 2013</td></tr>
<tr><td>Sat, Jul 6, 2013</td></tr>
<tr><td>Tue, Dec 10, 2012</td></tr>
</tbody>
</table>
这是对日期格式的一个小改动,但它导致表格无法过滤。是否需要不同的格式?我错过了一个图书馆吗?
库
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/themes/cupertino/jquery-ui.css">
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script src="jquery.tablesorter.min.js"></script>
<script src="jquery.metadata.js"></script>
<script src="jquery.tablesorter.widgets.js"></script>
<script src="jquery.tablesorter.widgets-filter-formatter.js"></script>
答案 0 :(得分:1)
此问题可能是由于插件未将该列检测为日期列。分拣机最终使用该重新格式化日期列的默认文本解析器,因此排序错误。
当过滤器比较日期时,它会查找该列的已解析数据并将其与输入的过滤器进行比较(也已解析)。
我没有制作完整的demo for you,但尝试包含此解析器并查看它是否适合您。
$.tablesorter.addParser({
id: "date-ignore-weekday",
is: function (s) {
return false;
},
format: function (s, table) {
// probably not the best regex, but it works
var date = s.match(/\w+,\s+(.*)/);
return date ? new Date(date[1] || '').getTime() : s;
},
type: "numeric"
});
$('table').tablesorter({
theme: 'blackice',
headers: {
0: {
sorter: "date-ignore-weekday"
}
}
});
答案 1 :(得分:0)
我遇到了同样的问题,我发现了这个解决方案。
我的日期格式为ddmmyyyy,例如2014年1月24日(1月)
这适用于jquery.tablesorter.widgets-filter-formatter.js
过滤小部件格式化程序功能 - 已于2013年9月9日更新(v2.13.3)
第363行:添加此行dateFormat: 'dd/mm/yy' // set the default date format
所以代码现在是
等。无需更改此文件中的任何其他内容。
在您设置表格分类器参数的地方添加
dateFormat : "ddmmyyyy", // set the default date format
等。
享受。