1

我混合了整数、双精度和几个破折号字符,我需要使用这个插件对其进行排序。

这是我的一个数据表的样子:

5,841
-
121
-
1,102
-
-
743
-
144
9,065
-
2,230
200
6,450
209
0
1
45
54,463
162
8,222

我希望输出是这样的:

0
1
45
121
162
144
200
209
743 
1,102 
2,230 
5,841
6,450 
8,222
9,065
54,463
-
-
-
-
-
-

或者 :

-
-
-
-
-
-
0
1
45
121
162
144
200
209
743 
1,102 
2,230 
5,841
6,450 
8,222
9,065
54,463

我试过这个解析器,不太工作:

jQuery.tablesorter.addParser({
  id: "commaDigit",
  is: function(s, table) {
    var c = table.config;
    return jQuery.tablesorter.isDigit(s.replace(/,/g, ""), c);
  },
  format: function(s) {
    return jQuery.tablesorter.formatFloat(s.replace(/,/g, ""));
  },
  type: "numeric"
});

$('#table_list').tablesorter({
        headers : { 
                0 : {sorter:'commaDigit'},
                1 : {sorter:'commaDigit'},
                2 : {sorter:'commaDigit'}
            }
    });

更新 :

我不知道这是否相关,但我的数据是这样放置的:

<tr>
<td><span>122</span><td>
<td><span>12,2</span><td>
</tr>
4

2 回答 2

1

如果您希望将破折号视为最大值,只需将它们设置为该值 ( Number.MAX_VALUE)。否则,您可以将其设为负数 ( -Number.MAX_VALUE)。这是一个演示

$.tablesorter.addParser({
  id: "commaDigit",
  is: function(s, table) {
    return false; // no need to test since you're manually setting it
  },
  format: function(s) {
    return ($.trim(s) === '-') ? Number.MAX_VALUE : $.tablesorter.formatFloat(s.replace(/,/g, ""));
  },
  type: "numeric"
});
于 2012-12-19T17:16:54.413 回答
0

您的脚本似乎工作正常

示例 jsfiddle

您可能需要检查您<table>是否有一个<thead>带有标题的部分,否则插件将无法工作。

如果您使用的是 asp.net 和 GridView,则必须明确将其设置为使用<thead>(请参阅:How can I use jquery tablesorter with an asp.net gridview? - 代码日志

于 2012-12-18T17:01:05.133 回答