1

This Exampleのように、tablesorterk で 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>
4

2 に答える 2

1

この問題は、プラグインがその列を日付列として検出しないことが原因である可能性があります。ソーターは、その再フォーマットされた日付列に対してデフォルトのテキスト パーサーを使用することになるため、並べ替えは正しくありません。

フィルターが日付を比較する場合、その列の解析済みデータを検索し、それを入力フィルター (同じく解析済み) と比較します。

完全なデモは作成していませんが、このパーサーを含めて、うまくいくかどうかを確認してください。

$.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"
        }
    }
});
于 2013-09-11T05:03:48.400 に答える