2015-10-20 35 views
1

我正在使用jQuery DataTable,第一列包含自定義日期範圍。例如:22 Oct 2015 - 22 Nov 2015其中22 Oct 2015是開始日期,22 Nov 2015是結束日期。我希望排序功能能夠在開始日期工作。在自定義日期範圍列上排序的jQuery數據表

讓我解釋一個場景:假設我有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日

如何去做這個!

回答

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

演示 - >http://jsfiddle.net/gs5syg70/

+0

讓我試試這個。 – deepakb

+0

asc排序很簡單,因爲'return b - a'和desc排序將會是'return a - b;'(或者可能是相反的方式,但您明白了)。 –

+0

謝謝你。它正在工作。 – deepakb