【问题标题】:DataTables momentjs sorting plugin doesn't sort AM/PM times properlyDataTables momentjs 排序插件无法正确排序 AM/PM 时间
【发布时间】:2018-09-02 08:02:41
【问题描述】:

我在带有DataTables 的表中显示了一些带时间戳的数据,并且我正在使用它的momentjs date sorting plugin 来正确排序日期/时间列。

它在只有日期的页面上工作,但在显示日期和时间的页面上,它忽略了上午和下午时间。

因此,如果在上午 7:00 输入了一条记录,则它会被排序为晚于在下午 6:30 输入的另一条记录。

是我做错了什么还是插件/momentjs 的错误?

我的代码:

$(document).ready(function () {
    $.fn.dataTable.moment('MM/DD/YYYY hh:mm:ss A'); //registers the date format we're using as sortable

    $('#<%=gvNotes.ClientID%>').dataTable({
        "order": [[1, 'desc']],
        "columnDefs": [
            { "orderable": false, "targets": 0 }, //disable sorting on the "edit" column
            { "type": "date", "targets": $('#<%=hfDateColumnNum.ClientID%>').val() } //date column formatted like "03/23/2018 10:25:13 AM"
        ]
    });
});

【问题讨论】:

  • 你能提供一个工作小提琴来显示你的问题吗?
  • @Yuri - 嗯......它在小提琴中工作。唯一的区别是在我的非工作代码中,日期类型的"targets" 的值是动态生成的。我的问题必须在那里......

标签: javascript jquery sorting datatables momentjs


【解决方案1】:

我发现了这个问题。在我上面更新的示例代码中,日期类型的targets 值是动态生成并存储在隐藏字段中的。

调用val() 会返回正确的值,但它被解析为字符串而不是整数,导致代码无法正确运行。使用parseInt() 解决了这个问题。

这是更新后的代码:

$(document).ready(function () {
    $.fn.dataTable.moment('MM/DD/YYYY hh:mm:ss A'); //registers the date format we're using as sortable

    $('#<%=gvNotes.ClientID%>').dataTable({
        "order": [[1, 'desc']],
        "columnDefs": [
            { "orderable": false, "targets": 0 }, //disable sorting on the "edit" column
            { "type": "date", "targets": parseInt($('#<%=hfDateColumnNum.ClientID%>').val()) } //date column formatted like "03/23/2018 10:25:13 AM"
        ]
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-21
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2021-01-20
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多