2016-05-09 20 views
7

Tôi đang sử dụng plugin DataTable jquery và trong một trong các bảng của tôi, tôi muốn sắp xếp kết quả dựa trên cột thời gian ngày. Vì vậy, tôi đã đưa vào phiên bản Moment.js 2.13.0 và phiên bản dataTable của tôi là 1.10.10 và phiên bản jQuery của tôi là 1.9.1.

Theo đề nghị trong thời gian ngày DataTable mới nhất này sắp xếp Plugin bài viết https://datatables.net/blog/2014-12-18, tôi đã thử sau nhưng trong giao diện điều khiển Tôi có

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

trong trang html của tôi,

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

My dữ liệu Cột Ngày có ngày ở định dạng này, 09-May-2016 19:38:00. Và tôi đã thay đổi thứ tự trong đó nguồn plugin dataTable và moment.js được bao gồm trong trang html của tôi. Nhưng tôi vẫn gặp lỗi tương tự. Điều gì có thể là vấn đề?

+0

Bạn đã nhập plugin _date/time sorting-in_ như được đề xuất trong bài viết bạn đã liên kết? Bạn phải nhập: '// cdn.datatables.net/plug-in/1.10.11/sorting/datetime-moment.js' – VincenzoC

+0

@VincenzoC vâng tôi đã thử thêm js nữa. Tôi đã thử bao gồm nó tại địa phương n cũng là phiên bản CDN. Tôi nhận được thông báo lỗi tương tự – Lucky

Trả lời

3

Sự cố bộ nhớ cache của trình duyệt. Các tệp JS mà tôi đưa vào không được tải xuống đúng cách trong trình duyệt gây ra sự cố. Tôi đã xóa bộ nhớ cache và sử dụng phiên bản CDN. Và nó hoạt động tốt. Đây là mã làm việc của tôi nếu có ai cần trong tương lai,

JS nhập khẩu:

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

}); 

Vì vậy, khi ban đầu tải DataTable phong tục ngày định dạng được phân tách từ thứ ba cột sử dụng moment.js và được sắp xếp theo thứ tự giảm dần.

+0

Định dạng có được áp dụng trên bảng của bạn không? Đối với tôi nó không hoạt động. – FrenkyB

+0

Mã của tôi (không hoạt động): $ ('# tblResults'). DataTable ({ "columnDefs": [ {target: [5, 6], render: $ .fn.dataTable.moment ("DD.MM. YYYY ")} ], – FrenkyB

+0

@ FrenkyB Nó hoạt động tốt cho tôi. Bạn có thể tạo bản trình diễn jsfiddle mã của bạn hoặc câu hỏi mới và liên kết nó ở đây không? – Lucky

8

Thứ tự nhập tập lệnh là quan trọng. Bạn phải bao gồm datatables trước khi sắp xếp plugin. Các công trình sau đây dành cho tôi:

<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> 
Các vấn đề liên quan