0

したがって、このコードを使用して、テーブルの「日付」列を並べ替えています。

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"monthYear-pre": function ( a ) {
    return new Date('01 '+a);
},

"monthYear-asc": function ( a, b ) {
    return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},

"monthYear-desc": function ( a, b ) {
    return ((a < b) ? 1 : ((a > b) ?  -1 : 0));
}
} );

「2012 年 7 月」などの日付では問題なく動作しますが、年だけの日付 (「2004」など) や季節 (2008 年春など) の日付には対応しません。常に最後に表示されるようにします。

何か案は?季節を月に例えるのが最も簡単な方法だと思います (例: 春 = 3 月、夏 = 6 月、秋 = 9 月、冬 = 12 月)。

ありがとうございました!

PS 私は初心者です - 2 番目の 2 つの文字列が何をしているのかはある程度理解していますが、最初の "monthYear-pre" は謎です。誰かが説明したいなら、私はわくわくします。

4

1 に答える 1

0
"seasonYear-pre": (function() {
    var seasons = /\s*(winter|spring|summer|fall|autumn),?\s*(\d{4})\s*/,
        matchedMonths = {winter: '02-01', spring: '05-01', 
                         summer: '08-01', fall: '11-01', autumn: '11-01'}
    return function(a) {
        var match = seasons.exec(a.toLowerCase());
        return new Date(match[2] + "-" + matchedMonths[match[1]]);
    };
})();

これは冬を年の初めに置きますが、上記のリストの正規の日付は自由に変更できます。「Winter 2012」や「Autumn, 2007」などの文字列に一致します。(カンマは省略可能で、大文字と小文字は区別されません。) このテーブル ソーター API を知りません。これを「monthYear-pre」からモデル化しましたが、単純な並べ替え方法が必要な場合は、簡単に変更できます。

于 2012-07-12T13:09:40.143 に答える