繁体   English   中英

DataTables-在1.10中排序的非英文字母

[英]DataTables - non-english letters sorting in 1.10

如何解决非美国字母(如š,č,ť在DataTables 1.10中的排序?

例如, "š"就像"s"但是现在这些字符(以这些字符开头的单词)在结尾(在AZ之后)。

对于DataTables 1.10版,我需要它。

这对测试用例,奇数值示例,有关您的语言环境和语言的一些信息等确实有帮助。 但是,我认为您可以通过在自定义排序插件中使用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初始化之前,先为字符串设置比较功能。 就我而言,这是波兰语(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( ... )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM