2009-05-05 8 views
1

Ich bin mit jquery tablesorter und ich versuche, eine Spalte mit Werten ähnlich wie diese zu sortieren:jquery tablesorter mit Abrechnungsnummer Format

$ 100.000 $ 38.000 ($ 4.000) 2.000 $

Daten innerhalb () sind negative Zahlen. Wenn Sie die Standardsortierfunktion verwenden, wird die ($ 4.000) nicht als negative Zahl erkannt. Daher versuche ich, eine benutzerdefinierte Funktion zu erstellen, um das Problem zu lösen.

Die Lösung unten ist, was ich mir ausgedacht habe, und es funktioniert gut. Aber ich frage mich, ob es eine bessere Lösung gibt? Ich bin neu in jQuery und nur auf der Suche nach etwas Einsicht.

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

    } 
); 

Wieder ist es das tut, was erforderlich ist, und ich bin zufrieden mit den Ergebnissen (und vielleicht sollte ich es einfach dort lassen ...), aber wenn es eine bessere Lösung ist, würde ich gerne hören .

Dank

+0

es ist nichts falsch mit der Art und Weise verwendet, um Sie Ich habe eine Suche durchgeführt und die einzige Alternative, die ich gefunden habe, war, eine verborgene Spalte mit den unformatierten Werten als Gleitkommawerte zu haben und danach zu sortieren – TStamper

+0

Danke, schätze es. – Kevin

Antwort

2

Wie abour Entfernen ""

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

so, Ihre Funktion geworden.

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

^^

Verwandte Themen