2013-09-10 8 views
1

При использовании DatePicker в tablesorterk, таких как This Example он говорит:Tablesorter + Datepicker Формат даты Сломанный

// add any of the jQuery UI Datepicker options here (http://api.jqueryui.com/datepicker/)

, который мы можем предположить, что включает в себя dateFormat, но по какой-то причине, только DateFormat, что работает это один в примере и по умолчанию.

Работы

dateFormat : 'M dd, yy' 
// comparison: Oct 13, 2013 

dateFormat : 'M dd, yy' 
// comparison Sep 22, 2013 

не работает

dateFormat : 'D M dd' 
// comparison: Fri Oct 04 

dateFormat : 'M dd' 
// comparison Sep 22 

Пример:

JQuery

$(function() { 
    $("table").tablesorter({ 
    widthFixed : true, 

    widgets: ["filter"], 
    widgetOptions : { 
     filter_formatter : { 
     0 : function($cell, indx){ 
      return $.tablesorter.filterFormatter.uiDateCompare($cell, indx, { 
      dateFormat : 'D, M dd, yy', 
      changeMonth : true, 
      changeYear : true, 
      compare : '=' 
      }); 
     } 
     } 
    } 
    }); 
}); 

HTML

<table class="tablesorter"> 
    <thead> 
    <tr> 
     <th data-placeholder="Sort By Date">Date (one input; greater than)</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr><td>Wed, Jun 26, 2013</td></tr> 
    <tr><td>Wed, Aug 21, 2013</td></tr> 
    <tr><td>Sun, Oct 13, 2013</td></tr> 
    <tr><td>Sat, Jul 6, 2013</td></tr> 
    <tr><td>Tue, Dec 10, 2012</td></tr> 
    </tbody> 
</table> 

это незначительные изменения формата даты, но это приводит к таблице, не будучи в состоянии фильтровать. Есть ли другой формат? Мне не хватает библиотеки?

Библиотеки

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/themes/cupertino/jquery-ui.css"> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script> 
<script src="jquery.tablesorter.min.js"></script> 
<script src="jquery.metadata.js"></script> 
<script src="jquery.tablesorter.widgets.js"></script> 
<script src="jquery.tablesorter.widgets-filter-formatter.js"></script> 

ответ

1

Этот вопрос, вероятно, из-за плагина не обнаруживает, что столбец в качестве столбца даты. Сортировщик заканчивается использованием текстового анализатора по умолчанию для этого столбца с переформатированной датой, поэтому сортировка будет неправильной.

Когда фильтр сравнивает даты, он ищет анализируемые данные для этого столбца и сравнивает их с введенным фильтром (также анализируется).

Я не сделал полный demo for you, но попробуйте включить этот парсер и посмотреть, работает ли он для вас.

$.tablesorter.addParser({ 
    id: "date-ignore-weekday", 
    is: function (s) { 
     return false; 
    }, 
    format: function (s, table) { 
     // probably not the best regex, but it works 
     var date = s.match(/\w+,\s+(.*)/); 
     return date ? new Date(date[1] || '').getTime() : s; 
    }, 
    type: "numeric" 
}); 

$('table').tablesorter({ 
    theme: 'blackice', 
    headers: { 
     0: { 
      sorter: "date-ignore-weekday" 
     } 
    } 
}); 
0

Я столкнулся с той же проблемой, и нашел это решение.

Мой формат даты DDMMYYYY например 24/01/2014 (январь)

Это работает с jquery.tablesorter.widgets-фильтр-formatter.js

Фильтр виджет Formatter функции - обновленный 11/9/2013 (v2.13.3)

Line 363: добавить эту строку dateFormat: 'dd/mm/yy' // set the default date format

поэтому код теперь enter image description here

и т. Д. Не нужно ничего менять в этом файле.

Где вы установите параметры таблицы Сортировщик добавить

dateFormat : "ddmmyyyy", // set the default date format

enter image description here

и т.д.

Наслаждайтесь.

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