Juery解决tablesorter中文排序和字符范围的方法

   这篇文章主要介绍了Juery解决tablesorter中文排序和字符范围的方法,实例分析了jQuery针对tablesorter中文排序和字符范围的解决方法,需要的朋友可以参考下

  tablesorter是jQuery插件中比较优秀的一款表格排序插件,我相信大家都使用过或有所耳闻,我在这里就不过多介绍了,详细信息可以看看官方网站:http://tablesorter.com/docs/(其中的demo做得比较完整)。

  在使用了tablesorter开发的几个项目中,发现了两种类型的排序存在问题,如下:

  第一个问题是无法对中文字符进行排序,这是因为在对字符排序时,是使用的unicode值进行的字符大小比较,代码如下:

  Js代码

  ?

1
2
3
4
5
6
7
8
9
10
11
12

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

  而我们想要得到的结果是按汉字拼音进行顺序进行排序,因此我们将代码修改为以下代码即可:

  Js代码

  ?

1
2
3
4
5
6
7
8
9
10
11
12

function sortText(a,b) {
return a.localeCompare(b);
};
function sortTextDesc(a,b) {
return b.localeCompare(a);
};
function sortText(a,b) {
return a.localeCompare(b);
};
function sortTextDesc(a,b) {
return b.localeCompare(a);
};

  localeCompare方法是JS自带的方法,不用多说,望文生义就知道这个方法是根据当前区域下对字符的大小进行比较,不过这个方法无法处理多音字。

  第二个问题是无法对超出了范围的数值型数据进行排序,这是因为在进行数值类型转换时,存在数据值失真的情况,例如:

  Js代码

  ?

1
2
3
4
5
6
7
8
9
10

alert(parseFloat('9999999999999999')); // 10000000000000000
alert(parseFloat('10000000000000001')); // 10000000000000000
alert(parseFloat('10000000000000004')); // 10000000000000004
alert(parseFloat('10000000000000005')); // 10000000000000004
alert(parseFloat('10000000000000006')); // 10000000000000006
alert(parseFloat('9999999999999999')); // 10000000000000000
alert(parseFloat('10000000000000001')); // 10000000000000000
alert(parseFloat('10000000000000004')); // 10000000000000004
alert(parseFloat('10000000000000005')); // 10000000000000004
alert(parseFloat('10000000000000006')); // 10000000000000006

  这样的偏差会使得排序结果不准确,为了避免这种问题,应该不使用原始值进行比较,而是应该引入权值,数值从左到右,每一位数值对应的权值递减,然后根据权值和原始值计算出的新值用于比较,这就只需要修改formatFloat方法就能解决这个问题了。

  Js代码

  ?

1
2
3
4
5

this.formatFloat = function(s) {
// TODO
var i = parseFloat(s);
return (isNaN(i)) ? 0 : i;
};

  希望本文所述对大家的jQuery程序设计有所帮助。

时间: 2024-10-27 10:39:08

Juery解决tablesorter中文排序和字符范围的方法的相关文章

Juery解决tablesorter中文排序和字符范围的方法_jquery

本文实例讲述了Juery解决tablesorter中文排序和字符范围的方法.分享给大家供大家参考.具体分析如下: tablesorter是jQuery插件中比较优秀的一款表格排序插件,我相信大家都使用过或有所耳闻,我在这里就不过多介绍了,详细信息可以看看官方网站:http://tablesorter.com/docs/(其中的demo做得比较完整). 在使用了tablesorter开发的几个项目中,发现了两种类型的排序存在问题,如下: 第一个问题是无法对中文字符进行排序,这是因为在对字符排序时,

解决JSP中文显示问题的几个方法

js|解决|问题|显示|中文 解决JSP中文显示问题的几个方法 总结了以下几条方法: 1.在jsp页中加入一条语句: <%@ page contentType="text/html;charset=gb2312" %>中文显示就正常了. 2.对于从网页中的文本框通过String parameter = request.getParameter("parameter");方式获得的字符串,均是8859_1的编码,如果想把它显示在网页上就必须得用parame

解决mysql中文排序无效方法

解决方法: 1.对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary". 2.如果你使用源码编译MySQL,可以编译MySQL时使用 --with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了(默认的是latin1).也可以用 extra-charsets=gb2312,gbk 来加入多个字符集 解决方法二,不影响到其它mys

mysql中文排序注意事项与实现方法_Mysql

mysql中文排序方法1 mysql在查询字符串时是大小写不敏感的,在编绎mysql时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,比较应急的方法是对于包含中文的字段加上"binary"属性,使之作二进制比较, 例如将"name char(10)"改成"name char(10)binary"." (已试验成功) mysql中文排序方法2 编译mysql时使用--with--char

中文排序-TableSort最新版如何支持中文汉字排序

问题描述 TableSort最新版如何支持中文汉字排序 最新版本链接:http://mottie.github.io/tablesorter/docs/index.html#Download 用完发现不支持中文排序,求修改支持方法. 解决方案 jQuery.tablesorter 2.0中文排序解决办法

escape解决AJAX中文乱码的简单方法

在使用AJAX开发网站时,经常有朋友遇到乱码的问题,而且一下子难以找到解决方法.其实解决AJAX中文乱码问题很简单. 1.服务端程序: <% liststr="AJAX中文乱码的简单解决方法" sponse.write escape(liststr) '用escape编码 %> 2.客户端JAVASCRIPT程序 function toserver(url) { var req = new XMLHttpRequest(); if (req) { req.onreadyst

MySQL中文排序错误的解决方法

一. 方法1 在MySQL中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的.这种情况在MySQL的很多版本中都存在.如果这个问题不解决,那么MySQL将无法实际处理中文. 出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,一种解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)&

JSP技巧:从原理上解决Tomcat中文问题

js|技巧|解决|问题|中文 很多开源软件都有国际化和本地化的问题,其实国际化本没有那么复杂,只是总有些公司希望通过拒绝国际标准来提高市场占有率,所以也就渐渐导致了现在的情况.很多开源软件首要支持的便是UTF编码,然后才是其他编码.(by gashero)当然也有些不着调的软件首选的是ISO-8859-1编码,甚至是ASCII编码.好了,下面先讲讲编码,因为Tomcat也是一种不着调的软件. 常见的中文编码有GB2312.GBK.GB18030等等,当然没有包括繁体中文,这些编码都是表示编码,而

PHP与MYSQL中UTF8编码的中文排序实例_php技巧

本文实例讲述了PHP与MYSQL中UTF8编码的中文排序方法,分享给大家供大家参考.具体实现方法如下: 一般来说,中文共有三种排序方式: 1.根据拼音排序: 2.根据笔画排序: 3.根据偏旁排序. 系统的默认排序方式为拼音排序了,这个也是我们常用的,下面介绍的就是按拼音排序了 1. 需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行.用gbk和gb2312可以.这跟几种格式的编码有关系.gbk和gb2312本身的编码就是用拼音排序的. 复制代码 代码如下: f