2009-05-05 29 views
1

我使用jQuery的tablesorter,我試圖理清與此類似值的列:的jQuery的tablesorter與會計數字格式

$ 100,000個 $ 38,000名 ($ 4,000)內 $ 2,000

數據( )是負數。使用默認排序功能時,它不會將$($ 4,000)識別爲負數,所以我正在嘗試創建一個自定義函數來處理此問題。

下面的解決方案是我想到的,它工作正常。但我想知道是否有更好的解決方案?我是jquery的新手,只是尋找一些見解。

$(document).ready(function() 
    { 
     $.tablesorter.addParser({ 
       // set a unique id 
       id: 'currency-column', 
       is: function(s) { 
         // return false so this parser is not auto detected 
         return false; 
       }, 
       format: function(s) { 
         s = s.replace(/$/g,""); 
         s = s.replace(/\(/g,"-"); 
         s = s.replace(/\)/g,""); 
         return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.-]/g),"")); 
       }, 

       type: 'numeric' 
     }); 

     $("#myTable").tablesorter({ 
      headers: { 
       3: { sorter:'currency-column' }, 
       4: { sorter:'currency-column' }, 
       5: { sorter:'currency-column' }, 
       6: { sorter:'currency-column' }, 
       7: { sorter: false }, 
       10: { sorter:'currency-column' } 
      } 
     }); 

    } 
); 

再次,它需要什麼,我對結果感到滿意(也許我應該離開那裏......),但如果有一個更好的解決方案,我喜歡聽到它。

感謝

+0

沒有什麼錯的方式,你使用,我做了一個搜索,我發現的唯一選擇是將隱藏列的未格式化值作爲浮點值排序,然後按 – TStamper 2009-05-05 16:54:53

回答

2

如何華南簡介刪除 「」

s = s.replace(/,/g,""); 

所以,你的函數變成:

format: function(s) { 
     s = s.replace(/$/g,""); 
     s = s.replace(/\(/g,"-"); 
     s = s.replace(/\)/g,""); 
     s = s.replace(/,/g,""); 
     return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.-]/g),"")); 
}, 

^^