2013-10-04 4 views
5

Вот мой заказ анализатор:JQuery - TableSorter пользовательский анализатор не работает

$.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 будет иметь значения, как:

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

Вот код, где я настройка на TableSorter и добавил пользовательские сортировки парсер:

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

Я добавить console.log (numericPartOfStringValue) и все номера были написаны к консоль, поэтому кажется, что парсер делает то, что он должен делать.

Так что же мне делать?

Я хочу, чтобы мои значения должны быть отсортированы по числовой части строки, как показано ниже:

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

Что на самом деле происходит?

Значения упорядочены следующим образом:

  • АВС-ДЕ-1
  • АВС-ДЕ-10
  • АВС-ДЕ-100
  • АВС-ДЕ-1000
  • ABC-DE-101

Что еще я попробовать?

Я добавил следующее в мой HTML, но это не делает разницы:

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

И наконец:

Вот пример значение из ячейки таблицы:

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

Вы используете DataTables или TableSorter? Если вы хотите продолжать использовать tablesorter, попробуйте мой [fork of tablesorter] (http://mottie.github.io/tablesorter/docs/), который по умолчанию использует буквенно-цифровой сортировку. Поэтому нет необходимости в специальном парсере в вашем случае. – Mottie

+0

Я использовал оба, datatables для поискового вызова и tablesorter для сортировки. Проблема заключалась в том, что мой пользовательский парсератор-анализатор не работал с данным подкачки. Я не знаю, почему я не использовал сортировку datatables, поэтому я переключил свой код на использование сортировки datatables сейчас. Я реализовал собственный парсер в datatables, и теперь все работает. Поэтому этот вопрос сейчас лишний. Спасибо, что посмотрели. –

ответ

3

Его работа, вам просто нужно установить порядок сортировки по умолчанию. Я использовал sortList., который представляет собой массив кортежей, которые содержат th-index и порядок (asc = 0, desc = 1).

Работа fiddle:

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

Спасибо за скрипку, чтобы показать ее работу. Ваша скрипка работает без «sortList: [[0,0]]», когда вы нажимаете на заголовок столбца, он просто не сортирует по загрузке. Я не понимаю, почему мой код не работает. Так что это меня озадачило. Я использую пейджинг, поэтому я подумал, что, возможно, это может вызвать проблему. Когда я удаляю пейджинг, мой исходный код работает нормально, поэтому теперь я подозреваю, что это что-то в пейджинге, что мешает этому работать. Я использую datatables.net для подкачки и фильтрации, я понятия не имею, почему я не использую datatables.net для сортировки. Я должен проверить. –

+0

Хорошо, я не понял, почему tablesorter не работал с подкачкой datatables.net, но мне удалось использовать сортировку datatables.net вместо tablesorter. Спасибо, что подтвердили, что это не мой код. –

+0

@careywalker обновит ваше сообщение выше, и я могу попытаться помочь вам. – Nix

Смежные вопросы