сортировщик таблицы jquery - дд / мм / гггг парсер - PullRequest
4 голосов
/ 14 апреля 2011

После поиска я не могу выполнить сортировку первого столбца по британскому формату даты - дд / мм / гггг Кто-нибудь захочет помочь мне с этой проблемой?Текущий js:

$(document).ready(function() 
{ 
    $("table.tablecontainer").tablesorter({widgets: ['zebra']});

    $("#myTable").tablesorter({ 
               sortList: [[0,0]], 
       headers: {
           5:{
              sorter: false
           }
       }
    });
}); 

Вся помощь оценена, поскольку это не та область, в которой я могу квалифицироваться как опытный!

Обновленный код:

$(document).ready(function() 
{ 
    $("#myTable").tablesorter({widgets: ['zebra']});
    $("#myTable").tableSorter( {dateFormat: "uk"} );
    $("#myTable").tablesorter({ 
    sortList: [[0,0]], 
    headers: {
    // assign the sixth column (we start counting zero)
     5:{
     // this is header 6 since the headers start at 0
        // disable it by setting the property sorter to false
     sorter: false
     },
    }});
}); 

Ответы [ 4 ]

8 голосов
/ 14 апреля 2011

Я лично использую скрипт Jquery tablesorter от tablesorter.com со свойством dateFormat-, установленным в "uk".

    $("#myTable").tablesorter({ 
        widgets: ['zebra'],
        dateFormat: "uk",
        sortList: [[0, 0]], 
        headers: { 5: { sorter: false}} 
     });

Вы вызываете скрипт несколько раз с разными опциями, что сбивает с толку плохую библиотеку.

Сделайте только один вызов TableSorter со всеми различными параметрами, установленными выше.

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

Удачи в ваших начинаниях: -)

5 голосов
/ 14 апреля 2011

для этого нужно определить парсер .Что-то вроде

// add parser through the tablesorter addParser method 
$.tablesorter.addParser({ 
    // set a unique id 
    id: 'uk-date', 
    is: function(s) { 
        // return false so this parser is not auto detected 
        return false; 
    }, 
    format: function(s) { 
        var date = s.split('/');
        return new Date(date[2],date[1],date[0]).getTime();
    }, 
    // set type, either numeric or text 
    type: 'numeric' 
}); 

это, вероятно, может быть лучше с проверкой формата.Я бы порекомендовал определить ваши парсеры в отдельном скрипте для плагина таблиц, чтобы вы могли легко обновить.Вы должны ссылаться на скрипт синтаксического анализатора в теге <script> после скрипта таблиц.

0 голосов
/ 02 марта 2015

http://mottie.github.io/tablesorter/docs/

Установить формат даты.Вот доступные варианты.(Изменено v2.0.23).

  • "ммддггг" (по умолчанию)
  • "ддммггг"
  • "ггггммдд"

ВВ предыдущих версиях этот параметр был установлен как «us», «uk» или «dd / mm / yy».Эта опция была изменена, чтобы лучше соответствовать нужным форматам даты.Он будет работать только с четырьмя цифрами лет!

Для сортировщика должно быть установлено значение «shortDate», а формат даты может быть установлен в параметре «dateFormat» или задан для определенных столбцов в параметре «headers».Посмотрите демонстрационную страницу, чтобы увидеть, как она работает.

$(function(){
  $("table").tablesorter({

    dateFormat : "mmddyyyy", // default date format

    // or to change the format for specific columns,
    // add the dateFormat to the headers option:
    headers: {
      0: { sorter: "shortDate" }, // "shortDate" with the default dateFormat above
      1: { sorter: "shortDate", dateFormat: "ddmmyyyy" }, // day first format
      2: { sorter: "shortDate", dateFormat: "yyyymmdd" }  // year first format
    }

  });
}); 

Отдельные столбцы можно изменить, добавив следующее (они все делают одно и то же), установленный в порядке приоритета (Modified v2.3.1):

  • jQuery data data-dateFormat = "mmddyyyy".
  • class метаданных = "{dateFormat: 'mmddyyyy'}".Для этого требуется плагин метаданных.
  • заголовки опций заголовков: {0: {dateFormat: 'mmddyyyy'}}.
  • имя класса заголовка class = "dateFormat-mmddyyyy".Общая опция dateFormat.

В моем случае я использовал

$("#myTable").tablesorter({dateFormat: "uk"}) 

для версии.

0 голосов
/ 14 апреля 2011

это уклоняется от вопроса, но я мог бы просто настроить параметр textExtraction (см. Здесь: http://tablesorter.com/docs/#Configuration)

Вы можете просто поместить сортируемую дату в скрытый промежуток (class = 'sort_key', как показано ниже) и установить что-то вроде:

textExtraction: function(node) {
  if($j(node).find('.sort_key').is('span') {
    return $j(node).find('.sort_key').text();
  } else {
    return $j(node).text();
  }
}
...