2012-03-05 15 views
2

私はJQuery tablesorterプラグインを使用しています。テーブルには、05 Mar 2012という形式の日付が表示されます。それが順番にそれをソートするためtablesorterプラグインは、テキストとして、この列を扱うように思わソート日付フィールドとテーブルリスト

  • 2012年3月5日
  • 2012年1月6日
  • 2012年12月7日

私はこれらを並べ替えることができますどのように代わりに時系列で日付?

答えて

3

日付文字列を日付に解析し、ミリ秒に変換します。 tablesorterに列を数値でソートさせます。

$.tablesorter.addParser({ 
    id: 'my_date_column', 
    is: function(s) { 
     // return false so this parser is not auto detected 
     return false; 
    }, 
    format: function(s) { 
     var timeInMillis = new Date.parse(s); 
     return timeInMillis;   
    }, 
    // set type, either numeric or text 
    type: 'numeric' 
}); 

$(function() { 
    $("table").tablesorter({ 
     headers: { 
      6: {  // Change this to your column position 
       sorter:'my_date_column' 
      } 
     } 
    }); 
}); 

Date.parseに問題がある場合は、see my answer to this questionです。

1

addParserメソッドを使用して、文字列をdateオブジェクトに変換するパーサーを作成する必要があります。

日付パーサが必要な場合は、プラグインのサイト http://tablesorter.com/docs/example-parsers.html

上の例は次のとおり

http://www.datejs.com/

EDIT:あなたの日付が示すフォーマットで簡単に変換します。

console.log(new Date('05 Mar 2012'))// logs proper date object 
0

はしていないが私は英国の似たような問題を覚えているようです。

カスタムdateformatを使用してtablesformerプラグインにdateformatパラメータを追加できます。

dateFormat: 'dd MMM yyyy' 
+0

私はこれを試しましたが、違いはありませんでした。何列に日付が含まれているかを何らかの形で示す必要がありますか? –

3

日付の前に非表示のスパンタグを数値形式(yyyymmdd)で追加することもできます。このテキストは最初にソートに使用されますが、視覚に隠され、必要な書式のみが表示されます。

<td><span style="display:none">20130923</span>23rd September 2013</td> 
+0

これは私にとってはうまくいかなかった。代わりにこれらのプロパティを使用して、スパンにクラスを追加しました。position:absolute; \t top:0px; \t可視性:非表示;ソータは、それをエンドユーザに表示せずにテキストを読むことができました。 – user417669

+0

これはすてきで簡単な解決策です+1 – karel