我的问题涉及Jquery插件Tablesorter:
我对使用价格的列进行排序存在问题,格式如下:135.35€,149.99€,1500€等
排序仅适用于数字,但是当我添加欧元符号时,排序不起作用。
我有第三列的ASC订单(参见下面的代码):
1)1435€
2)190€
3)834€
正如你所看到的那样,有些不对劲。有人可以告诉我该怎么办?
非常感谢,
弗朗索瓦
JS:
<script type="text/javascript" id="js">
$(document).ready(function() {
$("table").tablesorter({
});
});
</script>
HTML :(第3栏需要排序)
<table class="tablesorter" cellspacing="0" cellpadding="0" border="0">
<thead>
<tr>
<th width="50px">1</th>
<th width="120px">2</th>
<th width="280px" >3</th>
</tr>
</thead>
<tbody>
<tr>
<td>bla bla bla</td>
<td>bla bla bla</td>
<td>834 €</td>
</tr>
<tr>
<td>bla bla bla</td>
<td>bla bla bla</td>
<td>1435 €</td>
</tr>
<tr>
<td>bla bla bla</td>
<td>bla bla bla</td>
<td>190 €</td>
</tr>
</tbody>
</table>
答案 0 :(得分:2)
问题是price列未被识别为数字列并被排序为字符串值。您可以强制分拣机类型为数字(请参阅http://tablesorter.com/docs/example-meta-parsers.html)
中的示例答案 1 :(得分:1)
问题在于,使用欧元符号,它将数据视为字符串而不是数字。因此,排序是按字母顺序完成的,而不是数字顺序。
我的解决方案是从数据中删除欧元符号;然后将css类添加到那些具有数字值的单元格中,该数字值显示后面的欧元符号。
td.currency:after
{
content: " €";
}
答案 2 :(得分:1)
更好的选择是在tablesorter中使用自定义处理程序在排序之前删除欧元符号。这个方法从我能看到的处理HTML代码和非HTML代码。
在页面底部的就绪功能
上完成$("#tableSorterTable").tablesorter({
// Define a custom function to ignore the euro
textExtraction: function(node) {
return node.innerHTML.replace(\'\u20AC\', "");
}
});
答案 3 :(得分:0)
问题似乎是数字被解释为文本,而不是数字。 (正如文字123
和1234
都在2
之前,因为1
在2
之前。)这可能是因为你在你正在排序的表达。
尝试剥离€,排序,然后再次添加€。 (或者,为€添加一个单独的列,您不允许对其进行排序,以便排序列中的数据纯粹是数字。)
简单版本:
<tr>
<td>bla bla</td>
<td>bla bla</td>
<td>bla bla</td>
<td>123</td>
<td>€</td>
</tr>
请注意,我使用的是€
而不是€
,只是为了确保浏览器能够正确呈现它。
答案 4 :(得分:0)
欧元符号不是使整个值成为String的数字。字符串的编号为“111,22,3”,而不是编号为“3,22,111”。
最好将欧元符号放在单独的“货币”栏中,例如
<td>1234</td>
<td>€</td>
您可以根据需要将colspan="2"
添加到关联的<th>
表标题。
答案 5 :(得分:0)
有updated version支持本地化。