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

本文实例讲述了Juery解决tablesorter中文排序和字符范围的方法。分享给大家供大家参考。具体分析如下:

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

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

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

Js代码

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代码

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代码

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代码

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索中文排序
, juery
, tablesorter
字符范围
jquery 字符串排序、tablesorter 不排序、tablesorter排序、tablesorter 默认排序、tablesorter 分页排序,以便于您获取更多的相关知识。

时间: 2025-01-02 11:57:44

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

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

  这篇文章主要介绍了Juery解决tablesorter中文排序和字符范围的方法,实例分析了jQuery针对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

jQuery实现限制textarea文本框输入字符数量的方法_jquery

本文实例讲述了jQuery实现限制textarea文本框输入字符数量的方法.分享给大家供大家参考.具体实现方法如下: (function($) { $.fn.extend( { limiter: function(limit, elem) { $(this).on("keyup focus", function() { setCount(this, elem); }); function setCount(src, elem) { var chars = src.value.lengt

中文排序-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等等,当然没有包括繁体中文,这些编码都是表示编码,而