jQuery tablesorter - 使用混合文本和数字对列进行排序

时间:2010-01-28 21:04:14

标签: javascript jquery tablesorter

我有一个表格,其中包含一组混合文本和数字的数据。我正在使用jQuery和tablesorter plugin对其进行排序。无法正确排序的数据是设备标签,例如“AHU-1”,“AHU-2”,“AHU-10”。问题是,给定这些示例值,AHU-10将被放置在AHU-1和AHU-2之间。我发现强制“数字”排序并不能解决问题。

这是我的问题:1)有没有人知道我可以在这种情况下使用的现有解析器?如果没有,那么我需要编写自己的解析器,在这种情况下2)我应该如何编写解析器?我应该尝试将每个字母翻译成一个数字并进行数字排序吗?这是我最初的想法。

还有一件事,我不确定连字符是否是分隔符。 “AHU-1”也可能是“AHU1”,或“AHU 1”,或“AHU:1”,或其他。

2 个答案:

答案 0 :(得分:1)

假设您需要做的就是将AAA-1模式的任何字符串排序为AAA-01,您可以执行以下操作:

var myTextExtraction = function(node)  
{  
    // extract data from markup and return it  
    return node.childNodes[0].childNodes[0].innerHTML
               .replace(/([A-Z]{3}-)(\d)/,'$1-0$2'); 
} 
$(document).ready(function() 
    { 
        $("#myTable").tableSorter( {textExtraction: myTextExtraction} ); 
    } 
); 

答案 1 :(得分:1)

您需要编写自己的解析器。您要找的是“natural sort”。有很多javascript自然排序算法。我找不到一个为tablesorter插件预先写好的内容,但谷歌搜索出现了不少。