顾名思义就是对中文数字:第一、第二、第三等等。
需要对 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 的要求指定那列的类型就行了。
另外,请路过的高手指点一下有没有什么办法来方便的进行自定义排序?
多谢!