2009-05-05 10 views
1

J'utilise jquery tablesorter et je suis en train de trier une colonne avec des valeurs similaires à ceci:jquery tablesorter au format numérique comptable

100.000 $ 38.000 $ (4.000 $) 2.000 $

Les données contenues dans () sont des nombres négatifs. Lorsque vous utilisez la fonction de tri par défaut, il ne reconnaît pas le nombre négatif (4000 $), donc j'essaie de créer une fonction personnalisée pour gérer cela.

La solution ci-dessous est ce que j'ai trouvé, et cela fonctionne très bien. Mais je me demande s'il y a une meilleure solution? Je suis nouveau à jquery et je cherche juste un aperçu.

$(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' } 
      } 
     }); 

    } 
); 

Encore une fois, il fait ce qui est nécessaire et je suis satisfait des résultats (et peut-être que je devrais le laisser là ...), mais s'il y a une meilleure solution que j'adorerait entendre .

Merci

+0

il n'y a rien de mal avec la façon dont vous avez utilisé , J'ai fait une recherche, la seule alternative que j'ai trouvée était d'avoir une colonne cachée avec les valeurs non formatées comme valeurs float et trier par ce – TStamper

+0

Merci, j'apprécie. – Kevin

Répondre

2

Comment ravail enlever ""

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

donc, votre fonction devient:.

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),"")); 
}, 

^^

Questions connexes