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 年春季)的日期合作。另外,如果我有“未知”我'希望它总是出现在最后。

有任何想法吗?我认为将季节与一个月类似是最简单的排序方法(例如 Spring=Mar、Summer=Jun、Autumn=Sep 和 Winter=Dec),但我不知道该怎么做。

谢谢!

PS我是新手-我有点理解后两个字符串在做什么,但是第一个“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”之类的字符串。(逗号是可选的,并且不区分大小写。)我不知道这个 table-sorter API。我以“monthYear-pre”为模型,但如果它需要是一个简单的排序方法,它很容易改变。

于 2012-07-12T13:09:40.143 回答