首页 > 代码库 > jQuery的dataTables插件实现中文排序
jQuery的dataTables插件实现中文排序
最近在写Java web。
写JSP的时候发现一个很好玩的插件dataTables。分页、过滤、排序等等手到擒来。
哎哎哎,有点点可惜的是排序这个功能不支持中文。于是网上查查找找,现在把方法整理一下,与君共享。
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”。感兴趣的朋友可以自己新建字库来解决这个问题。
jQuery的dataTables插件实现中文排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。