Ecco il mio parser personalizzato:jQuery - tablesorter parser personalizzato non funziona
$.tablesorter.addParser({
id: "customParser",
is: function (stringValue) {
return false;
},
format: function (stringValue) {
var stringValueParts = stringValue.split("-");
var numericPartOfStringValue = parseInt(stringValueParts[2]);
return numericPartOfStringValue ;
},
type: 'numeric'
});
stringValue avrà valori come:
- ABC-DE-1
- ABC-DE-10
- ABC-DE-100
- ABC-DE-101
- ABC-DE-1000
Ecco il codice in cui ho impostato-up il tablesorter e aggiunto il parser di ordinamento:
$(function() {
$("#dataTable").tablesorter({
headers: {
3: {
sorter: 'customParser'
}
}
});
});
ho aggiunto un console.log (numericPartOfStringValue) e tutti i numeri sono stati scritti fuori per la console così sembra che il parser stia facendo quello che dovrebbe fare.
Quindi cosa voglio accadere?
Voglio che i miei valori da ordinare da parte numerica della stringa come di seguito:
- ABC-DE-1
- ABC-DE-10
- ABC-DE-100
- ABC-DE-101
- ABC-DE-1000
Cosa sta realmente accadendo?
I valori vengono ordinati in questo modo:
- ABC-DE-1
- ABC-DE-10
- ABC-DE-100
- ABC-DE-1000
- ABC-DE-101
che altro ho provo?
ho aggiunto il seguente al mio html, ma non ha fatto la differenza:
<th class="{sorter: 'CustomParser'}">
String Value Column
</th>
E infine:
Ecco un valore di esempio dalla cella della tabella:
<td>
<span class="badge">ABC-DE-1</span>
</td>
Stai usando DataTable o tablesorter? Se vuoi continuare a usare tablesorter, prova il mio [fork of tablesorter] (http://mottie.github.io/tablesorter/docs/) che usa un ordinamento alfanumerico per impostazione predefinita. Quindi non c'è bisogno di un parser speciale nel tuo caso. – Mottie
Stavo usando entrambi i datatables per il paging e il tablesorter per l'ordinamento. Il problema era che il mio parser per i tablesorter personalizzati non funzionava con il paging datatable. Non so perché non stavo usando l'ordinamento dei dati, quindi ho cambiato il mio codice per usare l'ordinamento dei dati adesso. Ho implementato un parser personalizzato nei datatables e tutto funziona ora. Pertanto, questa domanda è ridondante ora. Grazie per avere un'occhiata. –