最近遇到一个难题,就是jQuery dataTables列排序问题。
原始的排序是按照英文排序的,数字和英文都排序正常,碰到中文汉字就排序乱了,不是按照中文拼音来排序的(据说是按照五笔来排的,此说法待验证,没具体查资料),所以非常不符合中国人的使用习惯。
经过研究,可以使用localeCompare来排序,
方法1:具体做法就是修改jQuery.dataTables里面的sort函数,把“return x<y ? -1 : x>y ? 1 : 0;”改成使用localeCompare。注意,修改的时候,如果两个全部是数字,那就不调用localeCompare了,如果需要调用,需要使用x+""。
方法2:(此方法转自:http://tlhl28.is-programmer.com/posts/18816.html)
// oSort 是排序类型数组, 'chinese-asc' 是自己定义的类型的排序(*-asc || *-desc)名称.
// 插件应该会根据表格中的内容的类型(string, number, chinese :) ),
// 比如: chinese类型的用 oSort['chinese-asc'] 方法进行比较排序。所以下面定义类型的时候要和这里对上。
//用oSort对应的function 来进行比较排序.
// 所以,function 里是自定义的比较方法.
jQuery.fn.dataTableExt.oSort[
'chinese-asc'
] =
function