jQuery数据表按自定义日期范围列排序
我使用的是jQuery DataTable,第一列包含一个自定义日期范围。例如:jQuery数据表按自定义日期范围列排序,jquery,sorting,datatables,Jquery,Sorting,Datatables,我使用的是jQuery DataTable,第一列包含一个自定义日期范围。例如:2015年10月22日-2015年11月22日其中2015年10月22日为开始日期,2015年11月22日为结束日期。我希望排序功能在开始日期起作用 让我解释一个场景:假设我在DataTable中有4行,第一列的日期值是: 2016年8月25日至2016年9月21日 2015年10月22日至2015年11月22日 2015年10月21日至2015年11月21日 2015年12月2日至2016年1月2日 我想要以下
2015年10月22日-2015年11月22日
其中2015年10月22日
为开始日期,2015年11月22日
为结束日期。我希望排序功能在开始日期起作用
让我解释一个场景:假设我在DataTable中有4行,第一列的日期值是:
- 2016年8月25日至2016年9月21日
- 2015年10月22日至2015年11月22日
- 2015年10月21日至2015年11月21日
- 2015年12月2日至2016年1月2日
- 2016年8月25日至2016年9月21日
- 2015年12月2日至2016年1月2日
- 2015年10月22日至2015年11月22日
- 2015年10月21日至2015年11月21日
如何做到这一点 要做到这一点,您必须实现自己的排序插件。这很简单:
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"date-range-pre": function ( a ) {
a = a.split('-')[0].trim();
return Date.parse(a);
},
"date-range-asc": function ( a, b ) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"date-range-desc": function ( a, b ) {
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
} );
演示->Asc排序很简单,因为
返回b-a
,而desc排序将返回a-b代码>(或者可能是相反的,但你明白了)。
var table = $('#example').DataTable({
columnDefs: [
{ type: 'date-range', targets: 0 }
]
})