【问题标题】:DataTable: Custom Sorting on date inside tdDataTable:td内日期的自定义排序
【发布时间】:2017-05-28 12:06:00
【问题描述】:

我有一个 JQuery DataTable,它运行良好,但在特定列上,排序没有按我的意愿工作。

在该列中有一些不同类型的值,例如 DateNumberText,如下所示:

我想在 Date 字段上实现自定义排序。

有小伙伴知道怎么实现吗?

有什么方法可以在<td> 中的特定<span> 标记上应用自定义排序。我可以在日期周围应用<span> 标签。

或者

采用另一种方式来实现这种类型的排序。

我阅读了太多文章,但没有发现任何有用的文章。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

标签: javascript jquery html sorting datatables


【解决方案1】:

试试这个方法:

$("#example").DataTable({
    columns:[
        null, 
        null, 
        null, 
        null,
        {
            "render": function(d){
                return $("<span></span>",{
                    "text": d,
                    "data-date": d.match(/[0-9]{2}[\/][0-9]{2}[\/][0-9]{4}$/)[0]
                }).prop("outerHTML");
            },
            "type": "data-date"
        }, 
        null
    ]
});

jQuery.extend(jQuery.fn.dataTableExt.oSort, {
    "data-date-pre": function(a) {
        return parseInt(moment($(a).data("date"), "DD/MM/YYYY").format("X"), 10);
    },
    "data-date-asc": function(a, b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "data-date-desc": function(a, b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
});

基本上,我们将相关数据包装在一个跨度中,并将提取的日期作为数据属性添加。然后我们对此进行排序。希望有帮助。使用类似数据处理 JSFiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多