tablesorter,不会按日期排序

时间:2012-05-14 13:53:51

标签: jquery html css tablesorter

如果有空格,那么tablesorter的行为会不同吗?

我对tablesorter很新,但我被要求迅速将其添加到客户站点(特别是允许他们按发布日期排序)。据我所知,日期(例如2012年5月14日)被读作文本,所以我需要添加一个解析器来将其更改为数字,以便正确排序。 (例如,14052012)

我有(目前使用其他开发人员编写的代码 - 驻留在tablesorter.js中)。

$.tablesorter.addParser({
id: 'dayMonthYear',
is: function(s) {
    return false;
},
format: function(s) {           

    var date = s.match(/^(\d{1,2})[ ](\w{3})[ ](\d{4})$/);
    var day = String(date[1]);
    if (day.length == 1) {
        day = "0" + day;
    }        

    var month = monthNames[date[2]];
    var year = date[3];
    var sortableDate = '' + year + month + day;
    return sortableDate;
},
type: 'numeric'  
});

var monthNames = {};
monthNames["Jan"] = "01";
monthNames["Feb"] = "02";
monthNames["Mar"] = "03";
monthNames["Apr"] = "04";
monthNames["May"] = "05";
monthNames["Jun"] = "06";
monthNames["Jul"] = "07";
monthNames["Aug"] = "08";
monthNames["Sep"] = "09";
monthNames["Oct"] = "10";
monthNames["Nov"] = "11";
monthNames["Dec"] = "12";

我也把它放在html页面中

$("table#searchresults").tablesorter ({
    headers: {
        0: {sorter:'dayMonthYear'}
    }
});

虽然我看到这段代码正常工作,但它似乎并不适用于我。这个月仍然被视为文本。

有什么想法吗?在工作演示和我的网站之间,我唯一能看到的不同之处在于,桌子上有大量的空白,这可能是个问题吗?


编辑:刚发现这个,http://beausmith.com/blog/custom-date-sorting-for-jquery-tablesorter-plugin/,看起来很熟悉上面的代码。希望它能帮助......

1 个答案:

答案 0 :(得分:3)

搞定了.. phew

$.tablesorter.addParser({
id: 'dayMonthYear',
is: function(s) {
    return false;
},
format: function(s) {       

    s = $.trim(s.replace(/\s+/g, ' '));


    var date = s.match(/^(\d{1,2})[ ](\w{3})[ ](\d{4})$/);
    var day = String(date[1]);
    if (day.length == 1) { day = "0" + day;}        
    var month = monthNames[date[2]];
    var year = date[3];

    return sortableDate = '' + year + month + day;
},
type: 'numeric'  
});
var monthNames = {};
monthNames["Jan"] = "01";
monthNames["Feb"] = "02";
monthNames["Mar"] = "03";
monthNames["Apr"] = "04";
monthNames["May"] = "05";
monthNames["Jun"] = "06";
monthNames["Jul"] = "07";
monthNames["Aug"] = "08";
monthNames["Sep"] = "09";
monthNames["Oct"] = "10";
monthNames["Nov"] = "11";
monthNames["Dec"] = "12";