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( ... )
Другие вопросы по тегам