使用可能的其他值来分类自定义日期

时间:2011-02-24 18:51:08

标签: jquery sorting date tablesorter

我正在使用最新版本的tablesorter插件,我需要以特殊方式对列进行排序。

值可以是这样的:

Values can be like this

我需要按日期排序,因此 Q4(31-12-2010)等值应显示为第一个

日期格式如下: dd-mm-yyyy

这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

以下是我将如何执行此操作的示例:

     $.tablesorter.addParser({
        id: 'quarters',
        is: function (s) {
            return false;
        },
        format: function (s) {
            var match = s.match(/(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20\d\d)/);
            if (match)
            {
               return match[3] * 1000 - match[2] * 100 - match[1] * 10;                
            }
            else return 0;
        },
        type: 'text'
    });

    $(document).ready(function () {
        $("table").tablesorter({
            headers: {
                0: {
                    sorter: 'quarters'
                }
            }
        });
    });                  

您可以将无效日期部分的回报调整为您想要的任何整数(0使其在最早的日期之前出现。)

答案 1 :(得分:1)

我使用自定义解析器

重写了这个

http://jsfiddle.net/rTrqz/2/

似乎为您的目的工作。

重要的部分在这里:

$.tablesorter.addParser({
    id: 'quarters',
    is: function (s) {
        return false;
    },
    format: function (s) {
        s = s.toLowerCase().replace(/q[0-9]/,'').replace(/\(/,'').replace(/\)/,'');            
        match = s.match(/(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20\d\d)/);
        return match[3] + match[2] + match[1]; 
    },
    type: 'text'
});