Bug in jQuery.tablesorter.js
Für jQuery gibt es ein wunderbares Plugin: den Tablesorter. Dieser erlaubt es einmal eingebunden, eine einfache HTML-Tabelle mit einem einfachen Befehl so umzuwandeln, dass der Nutzer sie nach Belieben sortieren kann. Ganz ohne irgendwelchen Programmieraufwand in der darunterliegenden Programmiersprache. Sicherlich kann man nun darüber streiten inwiefern man da eine Fallbackmöglichkeit brauch, aber wenn das Sortieren nur als Gimmick dient, reicht wohl die JS-Lösung.
Nun bin ich beim Rumexperimentieren aber auf ein Problem (was ich erst nach ein paar Irrungen und Wirrungen zuordnen konnte) gestoßen. Der tablesorter erkennt selbstständig die zu sortierenden Datentypen (also ob Text, Zahl, Datum, …). Dabei betrachtet er immer nur die erste Zeile der Daten. Nun hatte ich bei einer Version in der ersten Zeile zwei Zellen mit einer 0 (also Null). Und diese wollte er einfach nicht als Zahl erkennen. Ein Blick in den Code verriet, dass der zugrundeliegende reguläre Ausdruck eigentlich korrekt ist und die 0 als Zahl erkannt werden sollte. Hier der relevante Teilausschnitt (nach den … kommen noch ein paar Alternativen):
-
this.isDigit = function(s,config) {
-
var DECIMAL = '\\' + config.decimal;
-
var exp = '/(^[+]?0(' + DECIMAL +'0+)?$)…/';
-
return RegExp(exp).test($.trim(s));
-
};
Wobei config.decimal eine JS-Variable für das sprachabhängige Komma ist. Wie man sieht sind der Teil vor und nach der 0 beide optional. Trotzdem wird die 0 nicht erkannt. Erst nachdem ich ein (^0$) als Alternativgruppe hinzugefügt habe, erkennt er nun die 0 korrekt als Zahl… sehr seltsam.
Ich habe nun mal den Autor des tablesorters kontaktiert, um zu sehen, was dieser dazu sagt.
















