jQuery的dataTables插件實現中文排序

最近在寫Java web。javascript

寫JSP的時候發現一個很好玩的插件dataTables。分頁、過濾、排序等等手到擒來。java

哎哎哎,有點點惋惜的是排序這個功能不支持中文。因而網上查查找找,如今把方法整理一下,與君共享。web

 1 <script type="text/javascript">
 2     
 3     // oSort是排序類型數組, 'chinese-asc'是本身定義的類型的排序(*-asc || *-desc)名稱
 4     // 插件應該會根據表格中的內容的類型(string, number, chinese)進行比較排序,
 5     // 若是以chinese類型來排序則用oSort['chinese-asc']和oSort['chinese-desc']的方法
 6     // oSort對應的function裏面自定義比較方法
 7     jQuery.fn.dataTableExt.oSort['chinese-asc'] = function(x,y) {
 8         //javascript自帶的中文比較函數,具體用法可自行查閱瞭解
 9         return x.localeCompare(y);
10     };
11      
12     jQuery.fn.dataTableExt.oSort['chinese-desc'] = function(x,y) {
13         return y.localeCompare(x);
14     };
15     
16     // aTypes是插件存放表格內容類型的數組
17     // reg賦值的正則表達式,用來判斷是不是中文字符
18     // 返回值push到aTypes數組,排序時掃描該數組,'chinese'則調用上面兩個方法。返回null默認是'string'
19     jQuery.fn.dataTableExt.aTypes.push(function(sData) {
20         var reg =/^[\u4e00-\u9fa5]{0,}$/;
21         if(reg.test(sData)) {
22             return 'chinese';
23         }
24         return null;
25     });
26     
27     $(document).ready(function(){  
28         $('#tableId').dataTable({
29         });
30     });
31 
32  </script>

須要注意的是,jQuery.fn.dataTableExt相關的三個函數必須寫在$(document).ready(function(){});前面,不然中文排序失效。正則表達式

另另另,我以爲奇怪的地方,就是localeCompare() 函數對中文拼音的認知彷佛有點問題,例如「沈」的默認拼音首字母居然是「c」。感興趣的朋友能夠本身新建字庫來解決這個問題。數組

相關文章
相關標籤/搜索