2015-05-26 22 views
1

我有一個表以YYYY - ####的格式綁定數據。在某些情況下,可能會有值2012-456和2012-1234。默認情況下,2012-1234將在2012-456之前「排序」。如果我將排序改爲'數字',那麼它會拋出其他年份(例如:按順序排序2012-456,2013-555,2012-1234)。我猜測如果少於4位數字,我必須在連字符後面加數字0,但是我一直無法使分揀機工作。我嘗試過.addParser,但我對此並不熟悉,並且沒有成功。有沒有什麼好的文章,我正在尋找或有人知道一種方法來實現這一目標?帶連字符的Tablesorter排序數字字段

這裏是被不正確地分類和將需要年的順序進行排序的示例數據(前4位)的圖像,然後連字符後數:

enter image description here

**另外,日期應顯然已經有了更好的格式,但在這種情況下,我無法調整輸入的方式。

回答

0

進一步調試後,我終於可以讓.addParser()工作,並儘可能地壓縮代碼。我猜是因爲我是javascript(新手),我沒有意識到.length會在我的html中計算空格和/或返回值。

  $('.tablesorter').tablesorter({ 
       widgets: ['zebra'], 
       headers: { 
        0: { 
         sorter: 'licenseYear' 
        } 
       } 
      }) 

      $.tablesorter.addParser({ 
       id: 'licenseYear', 
       is: function (s) { 
        return false; 
       }, 
       format: function (s) { 
        //pad zeros for max length of digits after hyphen 
        var pad = "0000"; 
        //replace hyphen with needed zeros to pad number 
        var n = s.replace(/-/, pad.substring(s.length - 5)); 
        return n; 
       }, 
       type: 'numeric' 
      }); 

*編輯:壓縮代碼的幫助從該線程約填充左:convert '1' to '0001' in JavaScript

+1

我有一個[的tablesorter的叉](http://mottie.github.io/tablesorter/docs/),其默認情況下使用自然排序算法,所以在這種情況下甚至不需要使用解析器:http://jsfiddle.net/abkNM/5882/ – Mottie

+0

哇,非常有趣。什麼是「自然排序算法」在做什麼?它很棒! – deebs

+1

它將內容分解爲「塊」,這些塊基本上是數字或字母組合,並將它們進行比較。它只比常規排序慢一點;優點彌補了它。排序算法來自[javascript-natural-sort](https://github.com/overset/javascript-natural-sort) – Mottie