tinytable sorter bootstrap jquery tablesorter

bootstrap - tablesorter jquery cdn



jQuery tablesorter no está ordenando el número correctamente (8)

Llevo días intentando que jQuery tablesorter ordene correctamente los números en la columna de mi tabla.

Estoy usando las últimas versiones actuales de ambos scripts.

La tabla está bien representada, pero la clasificación de los números no funciona correctamente.

Cuando ordeno una columna de números me da los siguientes resultados:

8 7 4 32 31 3 etc.

donde usted esperaría: 32 31 8 etc ...

Leí algunos comentarios sobre cómo agregar código javascript adicional, pero no puedo encontrar ningún buen ejemplo de javascript.

El jQuery que estoy usando ahora es el siguiente:

$(document).ready(function() { $("#table1") .tablesorter( { sortList: [[0,0]], widthFixed: true, widgets: [''zebra''] } ) } );

Aquí está mi HTML:

<table id="table1" class=tablesorter> <thead> <tr> <th width=65>Name</th> <th width=40>Count</th> </tr> </thead> <tbody> <tr><td>Name_1</td><td>32</td></tr> <tr><td>Name_2</td><td>12</td></tr> <tr><td>Name_3</td><td>11</td></tr> <tr><td>name_4</td><td>14</td></tr> <tr><td>Name_5</td><td>7</td></tr> <tr><td>Name_6</td><td>3</td></tr> <tr><td>Name_7</td><td>32</td></tr> <tr><td>Name_8</td><td>31</td></tr> <tr><td>Name_9</td><td>35</td></tr> </tbody> </table>


¿Puedes mostrar tu html también? Tablesorter debe detectar y manejar la clasificación numérica sin ninguna opción especial. ¿Es posible que sus valores numéricos estén rodeados por html? En ese caso, es posible que necesite un método personalizado para extraer los valores del html.

Ejemplo del enlace referenciado:

$(document).ready(function() { // call the tablesorter plugin $("table").tablesorter({ // define a custom text extraction function textExtraction: function(node) { // extract data from markup and return it return node.childNodes[0].childNodes[0].innerHTML; } }); });


Encuentra en jquery.tablesorter.js código:

this.isDigit = function(s,config) { var DECIMAL = ''//' + config.decimal; var exp = ''/(^[+]?0('' + DECIMAL +''0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)'' + DECIMAL +''(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*'' + DECIMAL +''0+$)/''; return RegExp(exp).test($.trim(s)); };

Y reemplazarlo con:

this.isDigit = function(s,config) { var DECIMAL = ''//' + config.decimal; var exp = ''/(^[+]?0('' + DECIMAL +''0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)'' + DECIMAL +''(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*'' + DECIMAL +''0+$)/''; //return RegExp(exp).test($.trim(s)); return !isNaN(parseFloat($.trim(s))) && isFinite($.trim(s)); };


Esperamos que esto ayude a alguien si encuentra esta publicación, en tablesorter que ahora puede usar simplemente.

$(".table").tablesorter({ headers: { 5: { sorter: ''digit'' } // column number, type } });


Esto puede haber sido obvio para otros (no para mí), pero para que la solución funcione con los metadatos {sorter: ''digit''} necesita usar el complemento de metadatos jQuery .


Parece que necesitas rellenar tus números. Eso explica por qué 8, 7 y 4 se ordenan antes de 32 y 31.

Prueba esto:

function padLeft(s,len,c){ c=c || ''0''; while(s.length< len) s= c+s; return s; } $("table").tablesorter({ textExtraction: function(node) { return padLeft(node.innerHTML,2); } });

Use un valor mayor que 2 si necesita ordenar números más grandes.


Sé que esta es una pregunta antigua, pero encontré el mismo problema y en lugar de probar CUALQUIER solución publicada aquí, primero debe verificar la versión de su complemento. Todos los problemas se resolvieron cuando descubrí que no estaba usando la versión más reciente (2.0.5)


También puedes probar esto:

$(document).ready(function() { $("table").tablesorter({ // put other options here ... textExtraction: function(node) { return parseInt($(node).text()); } }); });

... esto trata el contenido de las celdas ordenadas como números enteros, después de extraer solo el texto.


<th width=110 class=/"{sorter: ''digit''}/">Count</th>

Esto solucionó el problema. Al indicar al javascript para manejar los valores como un dígito, la ordenación fue correcta. Todavía un poco tonto que los valores numéricos no se verifican en la secuencia de comandos como números. Pero supongo que hay un propósito superior para eso al final.

Gracias a todos por su tiempo y ayuda.

/ Fons