jQuery dataTables在自定义日期范围列上排序

时间:2015-10-20 10:41:38

标签: jquery sorting datatables

我使用的是jQuery DataTable,第一列包含自定义日期范围。例如:22 Oct 2015 - 22 Nov 2015其中22 Oct 2015是开始日期,22 Nov 2015是结束日期。我希望排序功能在开始日期工作。

让我解释一个场景:假设我在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日

怎么做!

1 个答案:

答案 0 :(得分:2)

您必须实现自己的排序插件才能执行此操作。这很简单:

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));
    }
} );

以上简单地通过拆分字符串来提取第一个日期,然后对其进行排序。没有错误处理,即照顾空字符串等等 - 你可以自己做。用法:

var table = $('#example').DataTable({
    columnDefs: [
       { type: 'date-range', targets: 0 }
    ]
}) 

演示 - &gt;的 http://jsfiddle.net/gs5syg70/