dataTables是個強大的JQuery表格插件,可是不支持中文排序,這個比較使人頭疼。javascript
這裏針對幾種常見的數據格式寫了一個dataTables的中文排序方法:java
//添加中文排序 function addChieseAsc() { jQuery.fn.dataTableExt.oSort['chinese-asc'] = function(x, y) { x = (x instanceof Array) ? x[0] : x == '-' ? 'z' : x; //z的ASCII碼值最大 y = (y instanceof Array) ? y[0] : y == '-' ? 'z' : y; //javascript自帶的中文比較函數,具體用法可自行查閱瞭解 return x.localeCompare(y); }; jQuery.fn.dataTableExt.oSort['chinese-desc'] = function(x, y) { x = (x instanceof Array) ? x[0] : x == '-' ? 'z' : x; y = (y instanceof Array) ? y[0] : y == '-' ? 'z' : y; return y.localeCompare(x); }; // aTypes是插件存放表格內容類型的數組 // reg賦值的正則表達式,用來判斷是不是中文字符 // 返回值push到aTypes數組,排序時掃描該數組,'chinese'則調用上面兩個方法。返回null默認是'string' jQuery.fn.dataTableExt.aTypes.push(function(sData) { var reg = /^[\u4e00-\u9fa5]{0,}$/; if (reg.test(sData)) { return 'chinese'; } return null; }); }
注:正則表達式
這樣還有一個問題就是:這裏的方法只會識別中文,因此若是有的列是空字符串或者null和中文在一列的時候等是進入不了不了這個方法的,那麼咱們就須要手動將這一列設置爲中文,跳轉驗證這一步。數組
設置方法爲:函數
在dataTables初始化的時候傳入type:插件
$('#table').DataTable({ columns: [{ title: "test", type: 'chinese',//這裏強制轉換類型 data: "fieldsName", render: function(data) { return formatTableData(data) } }], }); function formatTableData(data) { switch (data) { case null: case "false": case "": return '-'; break; case true: return '是'; break; case false: return '否'; break; default: return data; break; } }
這樣就大功告成了,dataTables能夠對中文進行排序了,但願對你們有幫助~code