jQuery 中文数字排序问题

顾名思义就是对中文数字:第一、第二、第三等等。

 

需要对 jquery.tablesorter 插件进行修改。

 

只要添加一个排序前的文字过滤就可以了。

 

找到 jquery.tablesorter.js 为 tablesorter 对象加入方法 

 

比如:

 

function replaceCNNumberStr(v){
        return v.replace(/\u4e00/,'1').replace(/\u4e8c/,'2').replace(/\u4e09/,'3').replace(/\u56db/,'4').replace(/\u4e94/,'5').replace(/\u516d/,'6').replace(/\u4e03/,'7').replace(/\u516b/,'8').replace(/\u4e5d/,'9').replace(/\u5341/,'10');
}

 

然后修改 sortText 和 sortTextDesc 方法,在其执行比较前替换掉相应的字符串:

 

比较烂的写法:

 

function sortText(a,b) {
    a = replaceCNNumberStr(a);
    b = replaceCNNumberStr(b);
    return ((a < b) ? -1 : ((a > b) ? 1 : 0));
};
			
function sortTextDesc(a,b) {
    a = replaceCNNumberStr(a);
    b = replaceCNNumberStr(b);
    return ((b < a) ? -1 : ((b > a) ? 1 : 0));
};	

 

当然你要是想替换大写的比如:壹贰叁肆伍陆柒捌玖拾 什么的就replace掉。

 

虽然这是一种比较烂的写法吧,但将就用到个不是很复杂的表格排序也够了。

 

顺便说一下,要是不想你打算用原来的方法排某些列,比如数字、日期什么的,只需要按照 jquery.tablesorter 的要求指定那列的类型就行了。

 

另外,请路过的高手指点一下有没有什么办法来方便的进行自定义排序?

 

多谢!

你可能感兴趣的:(jquery)