JQuery TableSorter Virgule Chiffres de l'Analyseur ne fonctionne pas
Voici mon problème,
Je suis actuellement en utilisant JQuery Table Trieur et j'ai trouvé une Virgule Chiffres de l'analyseur sur le web. Le problème que j'ai est qu'il ne semble pas fonctionner.
Voici donc ce que la colonne est triée comme:
- 4,666
- 141,666
- 293
- 341,666
- 346
- 461,676
Ce doit être triée
- 293
- 346
- 4,666
- 141,666
- 341,666
- 461,676
L'analyseur j'utilise est: est-ce
$( 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 je fais de mal. Suis-je le charger de mal? Est l'analyseur de mal? J'ai besoin d'aide ici et ont été aux prises avec ce problème pendant un certain temps maintenant.
Edit: Raison de la façon dont je créer mes colonnes et les colonnes permis d'être choisi par l'utilisateur, je ne pourrais jamais savoir ce qui l'en-tête est dans et pas. J'ai essayé d'utiliser la classe="{trieur: 'fancyNumber'}" de la commande comme indiqué ici: http://tablesorter.com/docs/example-meta-parsers.html
**Edit:**Il ressemble à l'une des colonnes est de travailler correctement, mais cette colonne est toujours d'avoir des problèmes. peut-être parce qu'il a les chiffres et séparation par virgule chiffres?
OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
Pour toute personne qui vient à travers cette question. J'ai dû ajouter de la classe de ma ligne d'en-tête. Donc, pour un en-tête que je voulais à la fantaisie de tri, j'ai ajouté cette classe:
Ce tourné sur le mode trieuse par défaut, ce qui fait travailler nice.
Ce qui m'a fait comprendre mon erreur dans ma manière de tourner sur le débogueur comme si.
Vous n'avez pas à le faire. Les en-têtes option vous permet de spécifier le type de données. Regardez tablesorter.com/docs/example-parsers.html de là et de voir. Dans vos options que vous venez de spécifier
headers: { 5: 'mysorter' }
et hop.Ce n'est pas bon, mais quand vous avez un nombre dynamique de colonnes. E. g. parfois, cette colonne est la colonne 5 dans une table et la colonne 4 dans une autre table. En la plaçant dans la TH directement, vous assurer que ça fonctionne partout. Je n'aime pas spécifiant les numéros de colonne numériquement codé en dur.
Cela fonctionne comme annoncé, mais assurez-vous d'ajouter le jquery.metadata.js lib, requise pour la spécification inline options. github.com/jquery/jquery-metadata
Je me demandais pourquoi mon
class="{sorter: 'numeric'}"
ne fonctionne pas; je ne l'avais pas mis dans le<th>
entrée! Évident quand pensé, mais je ne l'avais pas remarqué au premier abord. Votre post m'a aidé, merci!OriginalL'auteur
Cela peut aussi arriver si vous oubliez d'inclure les métadonnées plugin
** Posté ici car c'était le premier résultat de recherche sur Google.
OriginalL'auteur
ici ce que j'ai fait:
travaillé avec la virgule et le point de séparation.
tester http://jsbin.com/equci5
OriginalL'auteur
J'ai trouvé une solution qui a fonctionné pour moi.
Dans le tablesorter.js, modifier la formatFloat() fonction comme suit:
Ce sera de remplacer les virgules qui interfèrent avec le tri.
Trouvé la réponse ici.
Espérons que cela aide...!
OriginalL'auteur
Essayez d'assigner explicitement l'analyseur dans le .tablesorter() de la déclaration.
Voir la source
Je le vois. Est tablesorter l'aide d'un autre analyseur syntaxique pour le "fancyNumber" colonnes? Serait-il être intelligent pour les déplacer les analyseurs de la création au-dessus de l'autre pour qu'il obtient la première fissure à la colonne, au cas où l'un de l'autre analyseurs est sélectionné en premier?
Jared, Comment pourrais-je savoir si sa l'aide d'un autre analyseur? J'utilise la version mini de la trieuse donc je ne peux pas mettre exactement cet analyseur de front... Ma pensée est que sa le regarder comme un certain nombre de certaines lignes et un nombre avec une virgule pour les autres... Pour une raison quelconque, juste que sa ne fonctionne pas correctement..
Voici les étapes de débogage je voudrais essayer: 1) Dans la Console de Firebug (ou autre) assurez-vous que la regex déclenche un véritable sur la première valeur dans la colonne 2) assurez-vous que le foyer fonctionne correctement à la bande des virgules 3) Essayez le "unminified" de la version et de mettre l'analyseur comme la seconde (après le texte) et voir si cela fonctionne, si oui, ce sera un peu plus difficile à contourner.
OriginalL'auteur Jared
Que Jared l'a mentionné, vous devez spécifier la colonne qui utilise l'Analyseur, si vous ne connaissez pas l'indice de la colonne, vous pouvez trouver qu'il est de notre aide de ceci:
essayez-le maintenant, j'ai oublié d'ajouter var headers = {}; ligne
Nope, toujours pas qui se passe. Celui que j'ai utilisé votre idée, une autre colonne de tri de manière incorrecte commencé à travailler correctement. C'est peut être cette colonne, c'est la difficulté... c'est Peut-être parce qu'il y est un entier, et séparés par des virgules entier dans la même colonne?
essayez de gifler, de points-virgules à la fin de chaque ligne.
OriginalL'auteur duckyflip
J', essayez cette expression régulière: /(\d{1,3})?(\,\d{3})*/
OriginalL'auteur
Les analyseurs ne regardent que la première tbody ligne pour détecter analyseur à utiliser. Je devine que votre première ligne n'ont pas de virgules dans il. J'ai rencontré le même problème, et finalement forcé l'analyseur je voulais, à l'aide class="{trieur: 'fancyNumber'}"
OriginalL'auteur
Vous avez totalement raison que l'analyseur doit être au travail, la raison c'est n'est pas dû à un bug dans le plugin. En bref, le plugin pense qu'il peut trier les nombres avec des virgules correctement, et utilise donc ses construit en mode trieuse, mais ne parvient pas à les trier correctement.
Il existe quelques solutions pour y remédier.
Tout d'abord, vous pouvez (comme vous l'avez suggéré ci-dessus) force l'utilisation de votre fonction de tri (soit dans le ou dans le javascript lors de l'initialisation du plugin).
D'autre part, vous pouvez modifier le plugin pour utiliser vos fonctions, de préférence à la vôtre, cela peut être obtenue en inversant le sens de la boucle à la ligne 220 du plugin.
Troisièmement, vous pouvez résoudre le cassé de tri par défaut le comportement en modifiant soit les chiffres de la fonction de détection de ne pas accepter des virgules (ligne 861 du plugin) ou en modifiant la valeur par défaut du nombre de trieuse de gérer des virgules (ligne 852 du plugin).
J'ai posé cette question sur le tablesorter page google code: http://code.google.com/p/tablesorter/issues/detail?id=6
OriginalL'auteur
J'ai trouvé une solution qui a fonctionné pour moi. Dans le tablesorter.js, modifier la formatFloat() comme suit:
Ce sera de remplacer les virgules qui interfèrent avec le tri. Trouvé la réponse ici. Espérons que cela aide...!
OriginalL'auteur