DataTables - сортировка неанглоязычных букв в 1.10
Как я могу исправить сортировку в DataTables 1.10 для неамериканских букв, таких как š,č,ť
?
Например, "š"
как "s"
но теперь эти символы (слова, начинающиеся с этих символов) находятся в конце (после AZ).
Мне это нужно для DataTables версии 1.10.
1 ответ
Это действительно помогло бы с тестовым примером, примером нечетных значений, некоторой информацией о вашей локали и языке и так далее. Тем не менее, я думаю, что вы можете решить это просто с помощью localeCompare()
в пользовательском плагине сортировки, указав ваш язык и очень важно: Настройка sensitivity
уровень до 'accent'
:
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"locale-compare-asc": function ( a, b ) {
return a.localeCompare(b, 'da', { sensitivity: 'accent' })
},
"locale-compare-desc": function ( a, b ) {
return b.localeCompare(a, 'da', { sensitivity: 'accent' })
}
});
использование
var table = $('#example').DataTable({
columnDefs : [
{ targets: 0, type: 'locale-compare' }
]
})
Как уже говорилось, нельзя быть уверенным - информация в OP скудна, но теоретически это должно делать работу в большинстве случаев. По крайней мере, это для меня. Не забудьте передать действительный locale
строка, da
(Датский) только для примера.
демо -> http://jsfiddle.net/rc4wxnc7/
Мое решение основано на https://datatables.net/blog/2017-02-28
Перед инициализацией DataTables установите функции сравнения для строк. В моем случае это было для польского языка (мн).
let locale = 'pl'
let order = $.fn.dataTable.ext.type.order
delete order['string-pre']
order['string-asc'] = function(a, b) {return a.localeCompare(b, locale)}
order['string-desc'] = function(a, b) {return b.localeCompare(a, locale)}
а затем init
$('.my-table').dataTable( ... )