2013-10-04 19 views
5

Dưới đây là phân tích cú pháp tùy chỉnh của tôi:jQuery - TableSorter tùy chỉnh phân tích cú pháp không làm việc

$.tablesorter.addParser({ 
    id: "customParser", 
    is: function (stringValue) { 
     return false; 
    }, 
    format: function (stringValue) { 
     var stringValueParts = stringValue.split("-"); 
     var numericPartOfStringValue = parseInt(stringValueParts[2]); 
     return numericPartOfStringValue ; 
    }, 
    type: 'numeric' 
}); 

stringValue sẽ có giá trị như:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-101
  • ABC-DE-1000

Đây là mã nơi tôi thiết lập các tablesorter và bổ sung phân tích cú pháp tùy chỉnh sắp xếp:

$(function() { 
    $("#dataTable").tablesorter({ 
     headers: { 
      3: { 
       sorter: 'customParser' 
      } 
     } 
    }); 
}); 

tôi đã thêm một console.log (numericPartOfStringValue) và tất cả các con số được viết ra để giao diện điều khiển để có vẻ như trình phân tích cú pháp đang làm những gì cần làm.

Vì vậy, tôi muốn điều gì xảy ra?

Tôi muốn giá trị của tôi được sắp xếp trên một phần số của chuỗi như sau:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-101
  • ABC-DE-1000

Điều gì đang thực sự xảy ra?

Các giá trị đang được sắp xếp theo cách này:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-1000
  • ABC-DE-101

Tôi đã thử gì khác?

tôi đã thêm dòng sau vào html của tôi, nhưng nó đã không làm cho một sự khác biệt:

<th class="{sorter: 'CustomParser'}"> 
    String Value Column 
</th> 

Và cuối cùng:

Dưới đây là một giá trị ví dụ từ các ô trong bảng:

<td> 
    <span class="badge">ABC-DE-1</span> 
</td> 
+0

Bạn đang sử dụng DataTables hoặc tablesorter? Nếu bạn muốn tiếp tục sử dụng tablesorter, hãy thử [fork of tablesorter] của tôi (http://mottie.github.io/tablesorter/docs/) theo mặc định. Vì vậy, không cần cho một phân tích cú pháp đặc biệt trong trường hợp của bạn. – Mottie

+0

Tôi đã sử dụng cả hai, datatables cho phân trang và tablesorter cho việc phân loại. Vấn đề là trình phân tích cú pháp bảng tùy chỉnh của tôi không hoạt động với phân trang có thể định lượng được. Tôi không biết tại sao tôi đã không sử dụng các datatables phân loại vì vậy tôi đã chuyển mã của tôi để sử dụng datatables phân loại ngay bây giờ. Tôi đã triển khai trình phân tích cú pháp tùy chỉnh trong datatables và mọi thứ hiện đang hoạt động. Vì vậy, câu hỏi này là dư thừa ngay bây giờ. Cảm ơn bạn đã xem. –

Trả lời

3

Hoạt động của nó, bạn chỉ cần đặt thứ tự sắp xếp mặc định. Tôi đã sử dụng sortList. là một mảng các bộ chứa chứa chỉ mục thứ và thứ tự (asc = 0, desc = 1).

Làm việc fiddle:

$("#dataTable").tablesorter({ 
    sortList: [[0,0]], 
    headers: { 
      0: { 
       sorter: 'customParser' 
      } 
     } 
    }); 
+0

Cảm ơn fiddle đã cho thấy nó hoạt động. Fiddle của bạn hoạt động mà không có "sortList: [[0,0]]" khi bạn nhấp vào tiêu đề cột, nó chỉ không phân loại khi tải. Tôi không thực sự hiểu tại sao mã của tôi không hoạt động. Vì vậy, điều này đã cho tôi stumped. Tôi đang sử dụng phân trang nên tôi nghĩ rằng có thể điều này có thể gây ra sự cố. Khi tôi loại bỏ phân trang mã ban đầu của tôi đang làm việc tốt vì vậy bây giờ tôi nghi ngờ đó là một cái gì đó trong phân trang đó là ngăn chặn điều này làm việc. Tôi đang sử dụng datatables.net để phân trang và lọc, tôi không biết tại sao tôi không sử dụng datatables.net để phân loại. Tôi đi kiểm tra. –

+0

Ok, tôi đã không tìm ra lý do tại sao các tablesorter đã không làm việc với datatables.net phân trang nhưng tôi đã quản lý để sử dụng datatables.net phân loại thay vì tablesorter. Cảm ơn bạn đã xác nhận rằng đó không phải là mã của tôi. –

+0

@careywalker cập nhật bài đăng của bạn ở trên và tôi có thể thử và giúp bạn. – Nix

Các vấn đề liên quan