如何修复DataTables 1.10中针对非美国字母š,č,ť
的排序?
例如,"š"
与"s"
类似,但现在这些字符(以这些字符开头的字)位于末尾(在A-Z之后)。
我需要DataTables版本1.10。
答案 0 :(得分:2)
这对测试用例,奇数值的示例,有关您的语言环境和语言的一些信息等非常有帮助。但是,我认为您可以通过在自定义排序插件中使用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/ 强>
答案 1 :(得分:0)
我的解决方案基于https://datatables.net/blog/2017-02-28
在DataTables初始化之前,为字符串设置比较功能。就我而言,这是波兰语(pl)。
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)}
然后初始化
$('.my-table').dataTable( ... )