Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery数据表按自定义日期范围列排序_Jquery_Sorting_Datatables - Fatal编程技术网

jQuery数据表按自定义日期范围列排序

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日 我想要以下

我使用的是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日
我想要以下格式的排序结果:

  • 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 }
    ]
})