簡體   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