要求
我的表可以有这样的值 -
1.00
0.00
23.10
-
35.00
-
22.00
0.00
0.00
我希望它像这样排序(所有连字符都应该放在最后) -
1.00
22.00
23.10
35.00
0.00
0.00
0.00
-
-
或者即使这样也可以(开头的所有连字符,至少它们与其他连字符是分开的) -
-
-
0.00
0.00
0.00
1.00
22.00
23.10
35.00
我所做
的我正在使用这样的自定义排序器(这是我们在项目中使用的排序器,它对于整数和十进制数字,即浮点类型非常有效) -
$.tablesorter.addParser({
// set a unique id
id: 'formattedNumbers',
is: function(s){
// return false so this parser is not auto detected
return false;
},
format: function(s){
// format your data for normalization
return s.replace(/,/g, '').replace(/%/g, ''); //removes comma separator from formatted numbers
},
// set type, either numeric or text
type: 'numeric'
});
并这样称呼它-
$("#"+report_type).tablesorter({
indexing: true,
textExtraction: 'complex',
headers : 1: {
{ sorter: 'formattedNumbers' },
},
widgets :['zebra'],
sortList:[[0,0]]
});
结果我得到了
但是我得到了不可预知的结果。0.00 和连字符 (-) 以外的数字在它们之间得到正确排序,但一些 0.00 和连字符仍然随机分散。像这样 -
0.00
1.00
22.00
0.00
-
23.10
-
35.00
0.00
-
我的想法
我们需要更改自定义排序器内部的逻辑以处理连字符。我尝试按照 jQuery tablesorter 中的建议寻找自然排序- 对包含混合文本和数字的列进行排序,但没有找到像我们的“formattedNumbers”这样的任何有效的自定义排序器。