2012-06-17 47 views

回答

0

第一個問題是將日期文本解析爲javascript Date object將識別的格式。一旦轉換爲日期,插件會將日期視爲數字排序類型。這是您的格式的工作解析器。

DEMO:http://jsfiddle.net/H9u7C/1/

$.tablesorter.addParser({ 

    // set a unique id 
    id: 'changeToDate', 
    is: function(s) { 
     // return false so this parser is not auto detected 
     return false; 
    }, 

    format: function(s) { 
     var a = $.trim(s).split(' '); 
     var time = a[0]; 
     var dateParts = a[1].split('/'); 
     var dateText = [dateParts[1], dateParts[0], dateParts[2]].join('/') + ' ' + time; 
     var dateObj = new Date(dateText); 
     return dateObj; 

    }, 

    type: 'numeric' 
}); 

用法如下概述了自定義分析器演示的插件網站

http://tablesorter.com/docs/example-parsers.html

0

我有2.0的tablesorter同樣的問題。 日期DD/MM/YY是錯的線982 ...

s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$1/$2/$3"); 

是錯誤的,正確的是

s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$3/$2/$1"); 

我ts.addParser({ID: 「shortDate」 ...是:

ts.addParser({ 
     id: "shortDate", 
     is: function (s) { 
      return /\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s); 
     }, format: function (s, table) { 
      var c = table.config; 
      s = s.replace(/\-/g, "/"); 
      if (c.dateFormat == "us") { 
       // reformat the string in ISO format 
       s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$1/$2"); 
      } else if (c.dateFormat == "uk") { 
       // reformat the string in ISO format 
       s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1"); 
      } else if (c.dateFormat == "dd/mm/yy" || c.dateFormat == "dd-mm-yy") { 
       s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$3/$2/$1"); 
      } else if (c.dateFormat == "dd/mm/yyyy" || c.dateFormat == "dd-mm-yyyy") { 
       s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1"); 
      } 
      return $.tablesorter.formatFloat(new Date(s).getTime()); 
     }, type: "numeric" 
    }); 

我有加DD/MM/YYYY情況下,對於日期,我不知道... :(

你必須把日期格式:「DD/MM/Y yyy「作爲參數。

相關問題