2016-05-09 3 views
7

Я использую jQuery плагин DataTable и в одной из моих таблиц, я хотел отсортировать результат на основе столбца времени даты. Итак, я включил version.js версии 2.13.0, а моя версия dataTable - 1.10.10, а версия jQuery - 1.9.1.

Как было предложено в этой последней DataTable время дата сортировки плагин статьи https://datatables.net/blog/2014-12-18, я попытался следующие, но в консоли у меня есть

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

в моем HTML-страницы,

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

Мои данные Дата колонке имеет дату в этом формате, 09-May-2016 19:38:00. И я изменил порядок, в котором источник данных dataTable и moment.js включен в мою html-страницу. Но я все равно получаю ту же ошибку. В чем может быть проблема?

+0

Вы импортировали подключаемый модуль _date/time sorting_, как указано в статье, которую вы связали? Вам нужно импортировать: '// cdn.datatables.net/plug-ins/1.10.11/sorting/datetime-moment.js' – VincenzoC

+0

@VincenzoC yes Я попытался добавить это js тоже. Я попытался включить его локально и в версию CDN. Я получаю такое же сообщение об ошибке – Lucky

ответ

3

Ошибка кэширования браузера. Файлы JS, которые я включил, неправильно загружены в браузере, что вызывает проблему. Я очистил кеш и использовал версию CDN. И все получилось отлично. Вот мой рабочий код, если кому-то нужен в будущем,

JS импорт:

<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" ]] 
    }); 

}); 

Так что, когда первоначально в DataTable загружает пользовательские отформатированные дату анализируется с третьего столбец, используя moment.js и отсортированный в порядке убывания.

+0

Используется ли формат для вашей таблицы? Для меня это не работает. – FrenkyB

+0

Мой код (не работает): $ ('# tblResults'). DataTable ({ "columnDefs": [ {target: [5, 6], render: $ .fn.dataTable.moment ("DD.MM. YYYY ")} ], – FrenkyB

+0

@FrenkyB Это отлично работает для меня. Могли бы вы сделать демо-версию jsfiddle вашего кода или новый вопрос и связать его здесь? – Lucky

8

Важным является порядок импорта скриптов. Вы должны включить данные перед плагином сортировки. Следующие работы для меня:

<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> 
Смежные вопросы