3

空白がある場合、テーブルソーターの動作は異なりますか?

私は 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/を見つけたところ、上記のコードになじみがあるように見えます。うまくいけば...

4

1 に答える 1

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";
于 2012-05-15T10:45:40.393 に答える