我爲我的問題創建了jsFiddle。jQuery dataTables自定義排序不適用於中文號碼
$.extend($.fn.dataTableExt.oSort, {
"mysort-pre": function (s) { return s.replace(/(<([^>]+)>)/g, ''); },
"mysort-asc": function (a, b) { return a.localeCompare(b); },
"mysort-desc": function (a, b) { return b.localeCompare(a); }
});
$(function(){
$('table').dataTable({
order: [[ 0, "asc" ]],
columnDefs: [ { type: "mysort", targets: 0 } ]
});
});
短,在中國,一
/二
/三
分別指1
/2
/3
。
默認情況下,它排序二
>三
>一
所以我決定寫我自己的排序。
數據字段中可能沒有一些HTML標籤,所以我用正則表達式去除了'-pre'
函數中的這些標籤。
至於'-asc'
和'-desc'
功能,我使用localCompare()
直接應該排序三
>二
>一
。
但結果與我腦海中的結果不一樣。
我使用Chrome穩定版41.''localeCompare()'與'zh-TW'語言環境給出了錯誤的排序[here](http://i.imgur.com/IQBLMZE.png)。但它並不重要!我的關鍵問題已在您提到的「CAUSE」部分中得到解決。謝謝! –
@JackCherng,你是對的。它適用於Firefox,但在Crome中不起作用,奇怪。這是'localCompare'的一個錯誤,或者必須使用不同的語言環境,您怎麼看? –
我只是從[這裏](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare)檢查'localCompare()'。 'localeCompare(a,「co」);'在Firefox和Chrome中都可以正常使用! –