jQuery dataTables 排序不适用于 dd-mm-yyyy 格式
Posted
技术标签:
【中文标题】jQuery dataTables 排序不适用于 dd-mm-yyyy 格式【英文标题】:jQuery dataTables sorting is not working for dd-mm-yyyy format 【发布时间】:2015-01-24 16:41:33 【问题描述】:在我的项目中,我想对 dd-mm-yyyy 格式的日期进行排序。我在下面尝试过这样的
jQuery.extend(jQuery.fn.dataTableExt.oSort,
"date-uk-pre": function(a)
var ukDatea = a.split('-');
return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
,
"date-uk-asc": function(a, b)
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
,
"date-uk-desc": function(a, b)
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
);
但这不起作用。此处仅对日期和月份进行排序,而不是基于年份。我从这里参考了Datatable date sorting dd/mm/yyyy issue
【问题讨论】:
有人对此有答案吗? 【参考方案1】:我知道这是一个老问题,但如果您刚从 Google 来到这里,现在有一个内置的解决方案。
只需为元素添加一个 html5 属性:
<td data-th="Lastrun" data-order="[unixTimestamp]">
[myWeirdDateFormat]
</td>
https://datatables.net/examples/advanced_init/html5-data-attributes.html
【讨论】:
谢谢马克。好的,我会打的【参考方案2】:它对我来说开箱即用,但我的日期和时间不那么复杂,所以如果你使用这个http://datatables.net/plug-ins/sorting/ 可能是最好的@
【讨论】:
【参考方案3】:带有隐藏的动态跨度元素
在我的例子中,数据是从服务器动态检索的,所以我找到了这个解决方案
var data = aResponce.noOfShipmentsTableData; //dynamic data from server
for (var i = 0; i < data.length; i++)
var array = [];
var pickUpDate = data[i]["pickUpDate"]; //date to sort
var span = pickUpDate.split("/");
if (span[1].length == 1)
span[1] = "0" + span[1];
if (span[0].length == 1)
span[0] = "0" + span[0];
span = "<span class='hideSpan'>"+span[2]+span[1]+span[0]+"</span>";
var PickUpDateTd = "<td>"+span+pickUpDate+"</td>";
array.push(PickUpDateTd); //push as many values you want in one row of datatable
totalCtsBookedTbl.api().row.add(array); //totalCtsBookedTbl is reference variable to my datatable
totalCtsBookedTbl.api().draw();
.hideSpan
display: none;
【讨论】:
以上是关于jQuery dataTables 排序不适用于 dd-mm-yyyy 格式的主要内容,如果未能解决你的问题,请参考以下文章