的jQuery的tablesorter无法正确分类数
-
12-09-2019 - |
题
我一直在尝试了几天,现在得到的jQuery的tablesorter在我的表列中正确地排序号。
我用这两个脚本的当前最新版本。
在表呈现正常,但排序的数字工作不正常。
当我排序号码栏它给我的结果如下:
8 7 4 32 31 3 等。
在这里你会期望: 32 31 8 等...
我读了增加额外的JavaScript代码的一些意见,但我无法找到任何好的javascript例子。
我使用现在的jQuery是如下:
$(document).ready(function()
{
$("#table1")
.tablesorter(
{
sortList: [[0,0]],
widthFixed: true,
widgets: ['zebra']
} )
}
);
下面是我的HTML:
<table id="table1" class=tablesorter>
<thead>
<tr>
<th width=65>Name</th>
<th width=40>Count</th>
</tr>
</thead>
<tbody>
<tr><td>Name_1</td><td>32</td></tr>
<tr><td>Name_2</td><td>12</td></tr>
<tr><td>Name_3</td><td>11</td></tr>
<tr><td>name_4</td><td>14</td></tr>
<tr><td>Name_5</td><td>7</td></tr>
<tr><td>Name_6</td><td>3</td></tr>
<tr><td>Name_7</td><td>32</td></tr>
<tr><td>Name_8</td><td>31</td></tr>
<tr><td>Name_9</td><td>35</td></tr>
</tbody>
</table>
解决方案 2
<th width=110 class=\"{sorter: 'digit'}\">Count</th>
这解决了这个问题。 告诉JavaScript来处理值作为一个数字做出的排序工作是正确的。 不过有点傻,这个数字的值不会在脚本检查为数字。但我想存在对在端部的更高的目的。
感谢所有为您的时间和帮助
/冯斯希
其他提示
希望这会帮助别人,如果他们发现这个帖子,在你的tablesorter现在可以简单地使用。
$(".table").tablesorter({
headers: {
5: { sorter: 'digit' } // column number, type
}
});
这可能是明显的给他人(不是我),但要获得解决方案与{分拣机:“数字”}工作的元数据,你需要使用的 jQuery的元数据插件。
我知道这是一个老问题,但我遇到了同样的问题,而不是试图在这里发布任何解决方案来了,你应该首先检查你的插件的版本。每一个问题得到解决,当我发现我不是使用最新的版本(2.0.5)
它看起来像你需要垫你的号码。这就解释了为什么8,7,和4 32之前排序,和31。
尝试这种情况:
function padLeft(s,len,c){
c=c || '0';
while(s.length< len) s= c+s;
return s;
}
$("table").tablesorter({
textExtraction: function(node) {
return padLeft(node.innerHTML,2);
}
});
2比使用更高的价值,如果你需要更大的数字进行排序。
您可以试试这个还有:
$(document).ready(function() {
$("table").tablesorter({
// put other options here ...
textExtraction: function(node) {
return parseInt($(node).text());
}
});
});
...这对待排序细胞的含量为整数,刚刚提取后的文本。
您可以显示你的HTML呢?的tablesorter应该检测和处理数字排序没有任何特殊的选项。有没有可能是你的数值是由HTML包围?在这种情况下,你可能需要一个自定义的方法,从提取值的HTML。
从引用链接示例:
$(document).ready(function() {
// call the tablesorter plugin
$("table").tablesorter({
// define a custom text extraction function
textExtraction: function(node) {
// extract data from markup and return it
return node.childNodes[0].childNodes[0].innerHTML;
}
});
});
查找jquery.tablesorter.js代码:
this.isDigit = function(s,config) {
var DECIMAL = '\\' + config.decimal;
var exp = '/(^[+]?0(' + DECIMAL +'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)' + DECIMAL +'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*' + DECIMAL +'0+$)/';
return RegExp(exp).test($.trim(s));
};
和其替换为:
this.isDigit = function(s,config) {
var DECIMAL = '\\' + config.decimal;
var exp = '/(^[+]?0(' + DECIMAL +'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)' + DECIMAL +'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*' + DECIMAL +'0+$)/';
//return RegExp(exp).test($.trim(s));
return !isNaN(parseFloat($.trim(s))) && isFinite($.trim(s));
};