была похожая проблема с таблицами данных некоторое время назад. И это было с датами, отформатированными числами, а также со специальными символами на немецком языке. Ваше имя звучит так, как будто вы из Скандинавии; Я думаю, что это может быть актуально и для вас ...
Вам понадобятся следующие плагины таблиц данных , чтобы сделать все это:
Это для дата / время сортировка: https://datatables.net/plug-ins/sorting/datetime-moment Для этого также требуется moment.js, который я настоятельно рекомендую. https://momentjs.com/
Это для международной сортировки при использовании специальных символов, таких как ä, ö ü и т. Д.
https://datatables.net/plug-ins/sorting/intl
А это для отформатированного числа сортировка:
https://datatables.net/plug-ins/sorting/formatted-numbers
Приведенные ниже примеры касаются автоматического определения соответствующих полей в зависимости от языка пользователя.
Примеры реализации:
Так что это о форматированных числах. Английский формат будет 1 000 000,99. Немецкий формат 1.000.000,99. Он также заботится о пустых полях.
//sorting of formatted numbers in English and German format
$.extend( $.fn.dataTable.ext.type.order, {
"formatted-num-pre": function ( a ) {
if (lang == 'de') {
a = a.toString().replace( /[\.]/g, "" );
a = a.toString().replace( /[\,]/g, "." );
} else {
a = a.toString().replace( /[\,]/g, "" );
}
a = a.toString().replace( /[^\d.-]/g, "" );
a = parseFloat(a);
if ( ! isNaN(a) ) {
return a;
} else {
//14 digit negative number to make sure empty cells always stay at the bottom / top
return -99999999999999;
}
},
"formatted-num-asc": function ( a, b ) {
return a - b;
},
"formatted-num-desc": function ( a, b ) {
return b - a;
}
} );
Речь идет о международной сортировке:
//sorting:
//Use the phonebook variant of the German sort order,
//which expands umlauted vowels to character pairs: ä → ae, ö → oe, ü → ue.
if (lang === 'de') {
$.fn.dataTable.ext.order.intl("de-DE-u-co-phonebk");
} else {
$.fn.dataTable.ext.order.intl("en-GB");
}
И, наконец, сортировка по дате:
//should be positioned after the number formatting to make sure
//date columns don't accidentally are assigned formatted-num
//set parms for date sorting using moment.js
$.fn.dataTable.moment( 'L', momentLocale );
переменная momentLocale в моем примере - это либо 'de', либо 'en-gb'. Соответствующие форматы дат: 10.11.2018 (немецкий) или 10/11/2018 (английский, Великобритания). (В отличие от 11/10/2018 в американском формате, который, как мне кажется, требуетtimeLocale быть «en»).