Question

Voici mon problème,

Je suis actuellement en utilisant le tableau JQuery Sorter et j'ai trouvé un analyseur Comma chiffres sur le web. Le problème que j'ai est-il ne semble pas fonctionner.

Voici donc ce que la colonne est triée comme:

  1. 4666
  2. 141666
  3. 293
  4. 341666
  5. 346
  6. 461676

Cela devrait être réglé comme

  1. 293
  2. 346
  3. 4666
  4. 141666
  5. 341666
  6. 461676

L'analyseur J'utilise est le suivant:

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

Je ne sais pas que je fais mal. Suis-je le charger mal? Est-ce que l'analyseur ne va pas? J'ai besoin réel d'aide ici et ont été aux prises avec ce problème depuis un certain temps maintenant.

Modifier En raison de la façon dont je produis mes colonnes et les colonnes autorisées à être choisi par l'utilisateur, je ne sais jamais ce qui est en tête et non. Je l'ai essayé d'utiliser la classe = "{trieuse: 'fancyNumber'}" commande comme indiqué ici: http://tablesorter.com/docs/example-meta-parsers.html

** Edit: ** Il ressemble à une des colonnes fonctionne correctement, mais cette colonne est d'avoir encore des problèmes. peut-être parce qu'il a des chiffres et des chiffres séparées par des virgules?

Était-ce utile?

La solution

Pour toute personne qui vient sur cette question. Je devais ajouter la classe à ma ligne d'en-tête. Donc, pour l'en-tête que je voulais genre de fantaisie, j'ai ajouté cette classe:

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

activé par défaut la trieuse qui fait le travail agréable.

Ce qui me fait réaliser mon erreur dans mes voies tournais sur le débogueur comme ainsi.

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

Autres conseils

Cela peut également se produire si vous oubliez d'inclure le plug-in de métadonnées

** Posté ici puisque ce fut le premier résultat de recherche sur Google.

ici ce que je l'ai fait:

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

travaillé avec une virgule et le séparateur point.

http://jsbin.com/equci5

J'ai trouvé une solution qui a fonctionné pour moi. Dans les tablesorter.js, modifier le FormatFloat () fonction comme suit:

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

Cela remplacera les virgules qui interféraient avec le tri. Trouvé la réponse . Espérons que cela aide ...

Essayez d'attribuer explicitement l'analyseur dans la déclaration .tablesorter ().

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

Voir la source

Jared a mentionné, vous devez spécifier quelle colonne utilise ce qui Parser, si vous ne connaissez pas l'index de la colonne, vous pouvez le trouver en utilisant notre ceci:

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

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

I, essayer cette expression régulière: / (\ d {1,3}) (\, \ d {3}) * /

Les parseurs ne regardent la première rangée de tbody pour détecter que l'analyseur à utiliser. Je devine que votre première ligne n'a pas de virgules dedans. Je suis tombé sur le même problème, et enfin juste forcé l'analyseur que je voulais, en utilisant class = « {trieuse: « fancyNumber »} »

Vous êtes tout à fait exact que l'analyseur devrait fonctionner, la raison pour laquelle il n'est pas est dû à un bug dans le plugin. En bref, le plug-in pense qu'il peut trier les nombres avec des virgules dans les correctement, et ainsi utilise son dans trieuse, mais ne parvient pas à les trier correctement.

Il y a quelques façons de le fixer.

Tout d'abord, vous pouvez (comme vous le suggérez ci-dessus) forcer l'utilisation de votre fonction de tri (soit dans le ou dans le javascript sur initialisation du plug-in).

En second lieu, vous pouvez modifier le plug-in d'utiliser vos fonctions de préférence à vous-même, cela peut être réalisé en inversant le sens de la boucle sur la ligne 220 du plug-in.

Troisièmement, vous pouvez corriger le comportement de tri par défaut rompu en modifiant soit la fonction de détection de chiffres pour ne pas accepter des virgules (ligne 861 du plug-in) ou en modifiant la trieuse de numéro par défaut pour gérer des virgules (ligne 852 du plug-in).

Je l'ai soulevé cette question sur la page de code google tablesorter: http: //code.google.com/p/tablesorter/issues/detail?id=6

J'ai trouvé une solution qui a fonctionné pour moi. Dans les tablesorter.js, modifier la fonction FormatFloat (), comme suit:

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

Cela remplacera les virgules qui interféraient avec le tri. Trouvé la réponse ici. Espérons que cela aide ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top