TypeError: $.fn.dataTable.moment is not a function

13 浏览
0 Comments

TypeError: $.fn.dataTable.moment is not a function

我正在使用jquery DataTable插件,在我的一个表格中,我想根据日期时间列对结果进行排序。所以,我包含了moment.js版本2.13.0,我的dataTable版本是1.10.10,我的jQuery版本是1.9.1。\n根据这篇最新的dataTable日期时间排序插件文章https://datatables.net/blog/2014-12-18的建议,我尝试了以下方法,但是在控制台中我得到了如下错误:\n

TypeError: $.fn.dataTable.moment不是一个函数
$.fn.dataTable.moment('DD-MMM-Y HH:mm:ss');

\n在我的html页面中,\n

$(document).ready(function() {
    $.fn.dataTable.moment('DD-MMM-Y HH:mm:ss');
    $('#myTable').DataTable();
});

\n我的日期列数据的格式为09-May-2016 19:38:00。我已经交换了在我的html页面中包含dataTable和moment.js插件源代码的顺序,但是我仍然得到相同的错误。可能是什么问题?

0
0 Comments

问题原因:浏览器缓存问题,导致JS文件没有正确下载到浏览器,从而引发了该问题。

解决方法:清除浏览器缓存并使用CDN版本的文件。

以下是解决后的工作代码,供将来参考使用:

JS导入:





DataTable初始化:

$(document).ready( function () {
    $.fn.dataTable.moment('DD-MMM-Y HH:mm:ss');
    $('#jobcardsTable').DataTable({
        responsive: true,
        "order": [[ 2, "desc" ]]
    });
});

当datatable加载时,使用moment.js解析第三列中的自定义日期格式,并按降序排序。

你的表格是否应用了这个格式?对我来说没有起作用。

我的代码(不起作用):

$('#tblResults').dataTable({
    "columnDefs": [
        { targets: [5, 6], render: $.fn.dataTable.moment("DD.MM.YYYY") }
    ]
});

对我来说,它工作正常。你能否创建一个jsfiddle演示你的代码,或者提一个新的问题并在这里提供链接?

对我来说,它工作正常。可以查看我根据你的fiddle创建的这个fiddle链接:jsfiddle.net/kn8xu10w/4。日期列会自动按降序排序。如果你想按升序排序,请将值更改为asc。重要的是确保datatables版本是1.10.x。即使不格式化日期,它也可以工作。

是的,排序工作正常,谢谢你提供的fiddle。也许你知道如何将日期列的格式更改为DD.MM.YYYY吗?

你可以参考这个链接:stackoverflow.com/questions/11591854/...,它应该会有所帮助。

再次感谢你。格式化日期不是问题,我的唯一问题是如何在jquery datatable中格式化日期。我不知道如何做到这一点...我以为你的解决方案不仅可以排序,还可以格式化日期。

我上面的代码只是对datatable列按日期格式进行排序,而不是格式化日期。你应该在渲染引擎或服务器端进行格式化。

0
0 Comments

TypeError: $.fn.dataTable.moment is not a function 这个问题的出现原因是没有正确加载moment.js和datetime-moment.js两个文件,或者加载的顺序不正确。

解决方法是按照以下顺序加载文件:

1. 首先加载moment.min.js文件;

2. 然后加载DataTables;

3. 最后加载DataTables + Moment插件。

正确的加载顺序可以确保$.fn.dataTable.moment函数能够正确调用,从而避免出现TypeError: $.fn.dataTable.moment is not a function的错误。

0
0 Comments

TypeError: $.fn.dataTable.moment is not a function这个问题的出现的原因是导入脚本的顺序有误。必须先导入datatables,然后再导入排序插件。

解决方法是按照正确的顺序导入脚本。下面是一个正确的示例:





按照这个顺序导入脚本可以解决TypeError: $.fn.dataTable.moment is not a function的问题。

0