I have similar problem tableSorter can't sort non US currency, even I have set usNumberFormat: false
$("#table1").tablesorter({
usNumberFormat: false,
headers: {
2:{
sorter: "digit"
}
}
})
th{cursor: pointer;}
th,td{min-width: 150px;border: 1px solid #eee;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.32.0/js/jquery.tablesorter.min.js"></script>
<table id="table1" class="tablesorter">
<thead>
<tr>
<th>Name</th>
<th class="tablesorter-digits">Total</th>
</tr>
</thead>
<tbody>
<tr><td>Name_1</td><td>Rp 32.333</td></tr>
<tr><td>Name_2</td><td>Rp 12.666</td></tr>
<tr><td>Name_3</td><td>Rp 11.666.654</td></tr>
<tr><td>name_4</td><td>Rp 14.655.444 (largest)</td></tr>
<tr><td>Name_5</td><td>Rp 7.225</td></tr>
</tbody>
</table>
The solution is adding custom addParser
$.tablesorter.addParser({
id: 'sortRupiah',
is: function(s) {
return false;
},
format: function(s) {
// replace any non-digit
var number = parseFloat(s.replace(/\D+/g, ''));
return isNaN(number) ? s : number;
},
type: 'numeric'
});
$("#table1").tablesorter({
usNumberFormat: false,
headers: {
1:{
sorter: "sortRupiah"
}
}
})
th{cursor: pointer;}
th,td{min-width: 150px;border: 1px solid #eee;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.32.0/js/jquery.tablesorter.min.js"></script>
<table id="table1" class="tablesorter">
<thead>
<tr>
<th>Name</th>
<th class="tablesorter-digits">Total</th>
</tr>
</thead>
<tbody>
<tr><td>Name_1</td><td>Rp 32.333</td></tr>
<tr><td>Name_2</td><td>Rp 12.666</td></tr>
<tr><td>Name_3</td><td>Rp 11.666.654</td></tr>
<tr><td>name_4</td><td>Rp 14.655.444 (largest)</td></tr>
<tr><td>Name_5</td><td>Rp 7.225</td></tr>
</tbody>
</table>