2012-05-14 31 views
3

如果有关于空白的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/,看起来很熟悉上面的代码。 Hopefuly它可以帮助...

+0

这是因为您解析个月为一个字符串,它们传递的INT'即monthNames [ “扬”] = 01;' –

+0

仙,我真的以为你在那里。虽然似乎没有改变。现在根本没有排序......还有其他想法吗? – Gillian

+1

你应该将你的“得到它的工作”编辑为一个答案。没关系,甚至鼓励回答你自己的问题,它可以更好地处理整个Q和A格式。而且你的答案比声誉更高。 – MrBoJangles

回答

3

得到它的工作..唷

$.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"; 
+0

这工作。谢谢..日期格式对我来说就像2014年2月20日。我必须改变var day = String(date [1]); var date = parseInt(String(date [1]),10);其余代码相同。添加上面的解析器后。添加此代码。 4是表中的日期列号。 $(“。tablesorter”)。tablesorter({headers:{ 4:{sorter:'dayMonthYe''} } })http://stackoverflow.com/questions/4860244/how-to-delete-px-从-245px – Parag