Pregunta

Aquí está mi problema,

Actualmente estoy usando el JQuery Tabla Clasificador y me encontré con una Coma Dígitos del analizador en la web.El problema que estoy teniendo es que no parece estar funcionando.

Así que aquí está lo que la columna se clasifican como:

  1. 4,666
  2. 141,666
  3. 293
  4. 341,666
  5. 346
  6. 461,676

Este debe ser ordenado como

  1. 293
  2. 346
  3. 4,666
  4. 141,666
  5. 341,666
  6. 461,676

El analizador que estoy usando es este:

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

Yo no sé que estoy haciendo mal.Estoy que me carga mal?Es el analizador de malo?Necesito ayuda de verdad aquí, y he estado luchando con este problema por un tiempo ahora.

Editar: Porque cómo puedo generar mis columnas y las columnas que le permitió ser elegido por el usuario, nunca se sabe que el encabezado está en y no.He intentado usar la clase="{clasificador:'fancyNumber'}" comando como se indica aquí: http://tablesorter.com/docs/example-meta-parsers.html

**Edit:**Se ve como una de las columnas está funcionando correctamente, pero esta columna se sigue teniendo problemas.tal vez porque tiene los dígitos y las comas separan los dígitos?

¿Fue útil?

Solución

Para cualquier persona que viene a través de esta pregunta. He tenido que añadir la clase a mi fila de encabezado. Así que para cualquier encabezado que quería una especie de fantasía, añadí esta clase:

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

Esto resultó en el clasificador por defecto que hace que funcione bien.

Lo que me hizo dar cuenta de mi error en mis caminos estaba convirtiendo en el depurador como tal.

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

Otros consejos

Esto también puede ocurrir si se olvida de incluir el plugin metadatos

** Publicado aquí, ya que este fue el primer resultado de búsqueda en Google.

aquí lo que he hecho:

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

trabajado con coma y punto de separación.

http://jsbin.com/equci5

He encontrado una solución que funcionó para mí. En los tablesorter.js, modificar el FormatFloat) función ( como sigue:

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

Esto reemplazará las comas, que estaban interfiriendo con la clasificación. Encontrado la respuesta rel="nofollow"> href="https://forum.jquery.com/topic/tablesorter-plugin-wrong-sort-with-thousands-separators" . Espero que esto ayude ...!

Como Jared ha mencionado, es necesario especificar qué columna utiliza la cual Analizador, si no se conoce el índice de la columna a continuación, se puede encontrar nuestro uso de este:

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

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

Yo, tratando esta expresión regular:? / (\ D {1,3}) (\, \ d {3}) * /

Los analizadores sólo mirar la primera tbody fila para detectar qué analizador de usar.Supongo que la primera fila no tiene ningún tipo de comas en la.Me encontré con el mismo problema, y, finalmente, sólo obligó al parser que yo quería, el uso de la clase="{clasificador:'fancyNumber'}"

Usted es completamente correcto que el analizador debe ser de trabajo, la razón no es se debe a un error en el complemento. En resumen el plugin cree que puede ordenar los números con comas en forma correcta, por lo que utiliza su construcción en clasificador, pero luego no logra clasificar correctamente.

Hay algunas maneras de solucionarlo.

En primer lugar se puede (como se sugirió anteriormente) forzar el uso de su función de clasificación (ya sea en el o en el javascript en la inicialización del plugin).

En segundo lugar se puede editar el plugin para utilizar sus funciones con preferencia a su propio, esto se puede lograr mediante la inversión de la dirección del bucle en la línea 220 del plugin.

En tercer lugar se puede solucionar el defecto roto clasificar el comportamiento mediante la modificación o bien la función de detección de dígitos para que no acepte comas (línea 861 del plug-in) o modificando el clasificador número predeterminado de manejar comas (línea 852 del plug-in).

He planteado esta cuestión en la página de Google Code tablesorter: http: //code.google.com/p/tablesorter/issues/detail?id=6

He encontrado una solución que funcionó para mí. En los tablesorter.js, modificar la función FormatFloat () como sigue:

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

Esto reemplazará las comas, que estaban interfiriendo con la clasificación. Encontrado la respuesta aquí. Espero que esto ayude ...!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top