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 :
- ''Use el analizador personalizado y aplíquelo en la tabla de inicio de orden'' - no reutilizable para tablas de lotes
- ''Usar el analizador personalizado y aplicar con la clase de la celda de la tabla'' - marcado sucio
- ''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.