对二补码
视觉传递的东东..

jQury datatables plugins 中文排序

TLHL28 posted @ Thu, 10 Jun 2010 06:31:47 +0800 in 随笔 with tags javascript , 6980 readers

 

本来想现在这个公司能让我学学服务器方面的东西.....看来是有些渺茫了...早说嘛...早说我就不来了,在原来那里还给我管两部开发服务器...经理肯教。不能怪别人,怪自己吧。

好! 牢骚发完了..我来现在这个新公司弄javascript去了........javascript我也是没用过几次的...

但是....网站新功能模块的所有javascript都要我一个人完成...shit......

好。切入重点好了.

恩,我用到了一个很强大的jquery插件。 datatables 详情请点击进去看。

老外的东西...没有中文排序...今天经理要求表格要有中文排序。死啦! 我以为要大动干戈...不过.因为这个插件对第三方开发支持比较灵活...得救了。

简单说一下。 datatables这个插件的排序默认提供按三种类型,string, number, 第三个忘记了.自己看吧。

于是,其他类型的排序就要自己定义了..应该说可以自己定义!!!

插件的string类型是按字符编码排序的,而我们所谓的中文排序是要按拼音排序的!!!!

google 了一下... javascript提供了这方面的功能。oh.yeah.....

下面这句代码应该好似俺本地化来做比较....中文环境就用拼音比较的意思... 返回 -1,1。(好像是....也忘记了。上网搜搜就有了...额...这是病。)

 

// oSort 是排序类型数组, 'chinese-asc' 是自己定义的类型的排序(*-asc || *-desc)名称.
// 插件应该会根据表格中的内容的类型(string, number, chinese :) ),
// 比如: chinese类型的用 oSort['chinese-asc'] 方法进行比较排序。所以下面定义类型的时候要和这里对上。
//用oSort对应的function 来进行比较排序.
// 所以,function 里是自定义的比较方法.
jQuery.fn.dataTableExt.oSort['chinese-asc']  = function(x,y) {
        //javascript 本身提供的本地化比较函数。
        return x.localeCompare(y);
    };

    jQuery.fn.dataTableExt.oSort['chinese-desc']  = function(x,y) {
        return y.localeCompare(x);
    };
    //aTypes 是插件存放表格内容类型的数组,可以根据自己需求添加,比如 curreny类型。
    // 下面用到的正则也是google来的,判断是否是中文字符.
    //返回 null 则默认表格内容是 'string' 类型。
    jQuery.fn.dataTableExt.aTypes.push(
        function(sData) {
            var reg =/^[\u4e00-\u9fa5]{0,}$/;
            if(reg.test(sData)){
                return 'chinese';
            }
            return null;
        }    
    );
/* 就说这么多吧...... */

 


Login *


loading captcha image...
(type the code from the image)
or Ctrl+Enter