zoukankan      html  css  js  c++  java
  • 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”。感兴趣的朋友可以自己新建字库来解决这个问题。

  • 相关阅读:
    http从发出请求到接收响应的旅行
    git(二)github的使用入门及搜索技巧
    git(一) 基础
    获取基于Internet Explorer_Server的聊天窗口内容
    主机字节与网络字节的转换
    SQL Server存储过程中防止线程重入处理方式
    利用NVelocity 模版生成文本文件
    C# async await 学习笔记2
    C# async await 学习笔记1
    imx6 工具链下载地址
  • 原文地址:https://www.cnblogs.com/SolarLau/p/4236331.html
Copyright © 2011-2022 走看看