web-dev-qa-db-fra.com

TypeError: $ .fn.dataTable.moment n'est pas une fonction

J'utilise le plug-in DataTable de jquery et, dans l'une de mes tables, je voulais trier le résultat en fonction de la colonne date/heure. Donc, j'ai inclus la version 2.13.0 de moment.js et ma version de dataTable est 1.10.10 et ma version de jQuery est 1.9.1.

Comme suggéré dans le dernier article du plugin de tri de date et d'heure de dataTable https://datatables.net/blog/2014-12-18 , j'ai essayé ce qui suit, mais dans la console, 

TypeError: $.fn.dataTable.moment is not a function
$.fn.dataTable.moment('DD-MMM-Y HH:mm:ss');

dans ma page html,

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

Les données de colonne My Date ont la date dans ce format, 09-May-2016 19:38:00. Et j’ai interverti l’ordre dans lequel la source du plug-in dataTable et moment.js est incluse dans ma page html. Mais je reçois toujours la même erreur. Quel pourrait être le problème?

10
Lucky

Problème de cache du navigateur. Les fichiers JS que j'ai inclus ne sont pas correctement téléchargés dans le navigateur à l'origine du problème. J'ai effacé le cache et utilisé la version CDN. Et cela a bien fonctionné . Voici mon code de travail si quelqu'un a besoin à l'avenir,

JS importations:

<script th:src="@{/js/jquery-1.8.3.js}" />
<script th:src="@{/js/jquery.datatables.min.js}" />
<script th:src="@{//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js}" />
<script th:src="@{//cdn.datatables.net/plug-ins/1.10.11/sorting/datetime-moment.js}" />

DataTable init:

$(document).ready( function () {

    $.fn.dataTable.moment('DD-MMM-Y HH:mm:ss');

    $('#jobcardsTable').DataTable({
        responsive: true,
        "order": [[ 2, "desc" ]]
    });

});

Ainsi, lors du chargement initial de données, la date au format personnalisé est analysée à partir de la troisième colonne à l'aide de moment.js et triée par ordre décroissant.

3
Lucky

L'ordre d'importation des scripts est important. Vous devez inclure les tables de données avant le plugin de tri . Ce qui suit fonctionne pour moi:

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>
<script src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script src="//cdn.datatables.net/plug-ins/1.10.12/sorting/datetime-moment.js"></script>
13
Ossipon

Les deux fichiers ci-dessous sont requis.

  • moment.min.js, et
  • datetime-moment.js 

Ne chargez tous les fichiers dans l'ordre suivant:

  • Moment, 
  • DateTables, 
  • DataTables + Moment plug-in.
0