tabla ordenar ordenable not mottie datos con jquery tablesorter

jquery - ordenar - tablesorter mottie



jQuery tablesorter-No ordenar columna con valor de moneda formateada (4)

Si quieres arreglar todos los tipos de datos (los más flexibles):

<script type="text/javascript"> $(function() { $("table").tablesorter({ textExtraction: function(node){ var cell_value = $(node).text(); var sort_value = $(node).data(''value''); return (sort_value != undefined) ? sort_value : cell_value; } }) }) </script> <td data-value="2008-04-01">01 Apr 2008</td> <td>Alice</td> <td data-value="80.00"><span>£80.00</span></td>

Esto tiene la ventaja de separar los datos de visualización de los datos de clasificación, más reutilizables.

jQuery 1.7.1 & tablesorter plugin - Tengo una columna de moneda con miles de separadores y valores como $ 52.00 $ 26.70 $ 100.00 $ 50.00 $ 1,002.00 $ 1,102.00. Cuando trato de ordenar me ordenan de la siguiente manera,

$1,002.00 $1,102.00 $26.70 $50.00 $52.00 $100.00

Necesitamos valores como,

$26.70 $50.00 $52.00 $100.00 $1,002.00 $1,102.00

Probé muchas soluciones mencionadas aquí, pero no hubo éxito.


Si solo quieres arreglar números de moneda (el más rápido):

<script type="text/javascript"> $("table").tablesorter({ textExtraction: function(node){ // for numbers formattted like €1.000,50 e.g. Italian // return $(node).text().replace(/[.$£€]/g,'''').replace(/,/g,''.''); // for numbers formattted like $1,000.50 e.g. English return $(node).text().replace(/[,$£€]/g,''''); } }) </script> <td><span>£80,000.00</span></td>

No me gustan estas otras 3 soluciones propuestas en :

  1. ''Use el analizador personalizado y aplíquelo en la tabla de inicio de orden'' - no reutilizable para tablas de lotes
  2. ''Usar el analizador personalizado y aplicar con la clase de la celda de la tabla'' - marcado sucio
  3. ''Corregir la clasificación de la moneda de TableSorters en la fuente'' - problemas para futuras actualizaciones

Siguiendo la misma idea propuesta por @Ownen, desde TableSorter v2.16.0, puede usar el atributo de data-text directamente, sin la necesidad de declarar su propia función de textExtraction (más información here )

<td data-text="2008-04-01">01 Apr 2008</td> <td>Alice</td> <td data-text="80.00"><span>£80.00</span></td>

Este atributo también funciona con otros widgets, como math .

Nota: para que funcione con el widget de salida , debe declarar la opción output_dataAttrib :

$(''#table'').tablesorter({ widgets: ["output"], widgetOptions : { output_dataAttrib: ''data-text'' } });


Tablesorter le permite definir " analizadores personalizados " para cosas como esta.

// add parser through the tablesorter addParser method $.tablesorter.addParser({ // set a unique id id: ''thousands'', is: function(s) { // return false so this parser is not auto detected return false; }, format: function(s) { // format your data for normalization return s.replace(''$'','''').replace(/,/g,''''); }, // set type, either numeric or text type: ''numeric'' }); $(function() { $("table").tablesorter({ headers: { 6: {//zero-based column index sorter:''thousands'' } } }); });

Puede que tenga que modificar la función de formato, que no he probado.