Frage

Hier ist mein Problem,

Ich bin derzeit mit der JQuery Tabelle Sorter und ich fand einen Comma-Digit-Parser auf dem Netz. Das Problem, das ich habe, ist es nicht zu funktionieren scheint.

So, hier ist das, was die Spalte als sortiert ist:

  1. 4666
  2. 141.666
  3. 293
  4. 341.666
  5. 346
  6. 461.676

Dies sollte sortiert werden

  1. 293
  2. 346
  3. 4666
  4. 141.666
  5. 341.666
  6. 461.676

Der Parser ich verwende, ist dies:

$( function() { 

    $.tablesorter.addParser({
        id: "fancyNumber",
        is: function(s) {
            return /^[0-9]?[0-9,\.]*$/.test(s);
        },
        format: function(s) {
            return $.tablesorter.formatFloat(s.replace(/,/g, ''));
        },
        type: "numeric"
    });
}); 

Ich weiß einfach nicht, dass ich falsch mache. Bin ich es falsch geladen? Ist der Parser nicht in Ordnung? Ich brauche hier echte Hilfe und habe jetzt mit diesem Problem für eine Weile zu kämpfen.

Edit: Weil, wie ich meine Spalten und die erlaubten Spalten erzeugen, um durch den Benutzer ausgewählt werden, würde ich nie wissen, welche Header ist in und nicht. Ich habe versucht, die Klasse mit = "{Sorter: 'fancyNumber'}" Befehl wie hier angegeben: http://tablesorter.com/docs/example-meta-parsers.html

** Edit: ** Es sieht aus wie eine der Spalten korrekt funktioniert, aber diese Spalte immer noch Probleme. vielleicht, weil es hat Ziffern und Komma getrennte Ziffern?

War es hilfreich?

Lösung

Für alle, die sich über diese Frage kommt. Ich hatte die Klasse meiner Kopfzeile hinzuzufügen. Also für jeden Header, die ich Lust sortieren wollte, habe ich diese Klasse:

<th class=\"{sorter: 'fancyNumber'}\">

Es stellte sich standardmäßig auf den Sortierer, die es schön gemacht arbeiten.

Was ich meine Fehler in meinen Wegen erkennen war wie so auf dem Debugger drehen.

$("#tblInfo").tablesorter({debug:true, widgets: ['zebra'], widgetZebra: { css: ['d0', 'd1']} });

Andere Tipps

Dies kann auch passieren, wenn Sie vergessen, die Metadaten-Plugin enthalten

** Geschrieben hier, da dies das erste Suchergebnis bei Google war.

Sie hier, was ich getan habe:

$(document).ready(function() {
      $.tablesorter.addParser({
        id: 'fancyNumber',
        is:function(s){return false;},
        format: function(s) {return s.replace(/[\,\.]/g,'');},
        type: 'numeric'
    });
    $("table").tablesorter({headers: {0: {sorter: 'fancyNumber'}}});
});

arbeitete mit Komma und Punkt-Separator.

test es http://jsbin.com/equci5

Ich fand eine Lösung, die für mich gearbeitet. In dem tablesorter.js, ändern Sie die Formatfloat () Funktion wie folgt:

this.formatFloat = function (s) {
            var i = parseFloat(s.replace(/[,]/g, ''));
            return (isNaN(i)) ? 0 : i;
        };

Das wird die Kommas ersetzen, die mit der Sortierung störten. Konnten Sie die Antwort hier . Hoffe, das hilft ...!

Versuchen Sie explizit den Parser in der .tablesorter () Erklärung zugeordnet werden.

.tablesorter( { headers: { 0: { sorter:'fancyNumber' } }); 

die Quelle

Als Jared erwähnt, müssen Sie angeben, welche Spalte verwendet, die Parser, wenn Sie den Index der Spalte nicht wissen, dann können Sie es unsere mit diesem finden:

var fancyIndex = $('th.fancyColumn').prevAll().length
var headers = {};
headers[fancyIndex] = {sorter:'fancyNumber'}

$("table").tablesorter({headers:headers})

ich, versuchen Sie diesen regulären Ausdruck:? / (\ D {1,3}) (\, \ d {3}) * /

Die Parser schauen nur auf der ersten tbody Reihe zu erkennen, welche Parser zu verwenden. Ich vermute, die erste Zeile keine Kommas in es hat. Ich lief in das gleiche Problem, und schließlich gezwungen, nur den Parser Ich wollte, mit class = "{Sorter: 'fancyNumber'}"

Sie völlig richtig sind, dass der Parser arbeiten sollte, ist der Grund, warum es nicht aufgrund eines Fehlers in der Plugin. Kurz gesagt: das Plugin denkt, dass es richtig in ihnen Zahlen mit Komma sortieren kann, und so nutzt seine in Sortierern gebaut, aber sie dann nicht richtig sortieren.

Es gibt ein paar Möglichkeiten, es zu beheben.

Zum einen können Sie (wie Sie oben vorgeschlagen) zwingen die Verwendung Ihrer Sortierfunktion (entweder in der oder in der Javascript Initialisierung des Plug-ins).

Zum anderen können Sie das Plugin bearbeiten, um Ihre Funktionen in Präferenz zu Ihrer eigenen zu verwenden, kann dies durch Umkehrung der Richtung der auf der Linie für Schleife erreicht werden 220 des Plugins.

Drittens können Sie das gebrochene Standardverhalten beheben Sortierung entweder durch die Ziffer Erkennungsfunktion modifiziert werden, um keine Kommas (Zeile 861 des Plugins) zu akzeptieren oder durch die Standardnummer Sortierer Modifizieren Kommas (Linie 852 des Plugins) zu behandeln.

ich dieses Problem auf der tablesorter Google Code Seite erhoben habe: http: //code.google.com/p/tablesorter/issues/detail?id=6

Ich fand eine Lösung, die für mich gearbeitet. In dem tablesorter.js, ändern Sie die Formatfloat () Funktion wie folgt:

this.formatFloat = function (s) {
            s = s.toString();
            var i = parseFloat(s.replace(/[,]/g, ''));
            return (isNaN(i)) ? 0 : i;
        };

Das wird die Kommas ersetzen, die mit der Sortierung störten. Gefunden hier die Antwort. Hoffe, das hilft ...!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top