jQuery TableSorter难以排序无法正常工作

时间:2012-05-14 15:26:11

标签: jquery tablesorter

该表有几列,包括第一列包含自定义日期格式(dd-mm-yyyy HH:MM:SS) e.g

   <tr>
        <td>14-05-2012 13:57:04</td>
        <td>MTUPTTC01V4.3_E2E-LoadBalancer-1336992891.jtl</td>
        <td>14-05-2012 13:10:03</td>
        <td>14-05-2012 13:56:38</td>
        <td>00:46:35</td>
        <td>400</td>
        <td>152328</td>
        <td>2494</td>
        <td>1.64%</td>
        <td><a href="2012-05-14_13_56_52">Results</a></td>
    </tr>

我正在使用以下自定义解析器,但它似乎无法正常工作。

   $.tablesorter.addParser({
                id: 'jmeterDate',
                is: function(s) {
                        return false;
                },
                format: function(s) {
                        var date = s.match(/^(\d{2})-(\d{2})-(\d{4})[ ](\d{2}):(\d{2}):(\d{2})$/);
                        var d = date[1];
                        var m = date[2];
                        var y = date[3];
                        var H = date[4];
                        var M = date[5];
                        var S = date[6];
                        var MS = 0;
                        //return '' + y + m + d;
                        return new Date(y, m, d, H, M, S, MS).getTime();
                },
                type: 'Numeric'
        });
        $("#tablesorter-table").tablesorter({
                headers: {
                        0: {
                                sorter: 'jmeterDate'
                        }
                }
        });

请参阅以下链接以获取完整示例

http://jsfiddle.net/Ese5A/1/

1 个答案:

答案 0 :(得分:1)

我已经解决了问题,它不是jQuery或自定义tablesorter,它实际上是Table内容本身。一些日期的长度不是正则表达式的预期,例如

04-05-2012 13:7:1

注意7和1,下面的正则表达式至少需要2位数。

s.match(/ ^(\ d {2}) - (\ d {2}) - (\ d {4}):( \ d {2}):( \ d {2})$ / )

FIX:

s.match(/ ^(\ d {1,2}) - (\ d {1,2}) - (\ d {4}):( \ d {1,2}):( \ d \ n {1,2})$ /)

现在接受长度为1或2的数字