2

我的问题涉及 Jquery 插件 Tablesorter :

我对价格列的排序有问题,格式如下:135.35 €、149.99 €、1500 €等

排序仅适用于数字,但是当我添加欧元符号时,排序不再起作用。

我有第三列的这个 ASC 顺序(见下面的代码):

1) 1435 欧元</p>

2) 190 欧元</p>

3) 834 欧元</p>

如您所见,有问题。有人可以告诉我我应该在这里做什么吗?

非常感谢,

弗朗索瓦

JS:

<script type="text/javascript" id="js">
    $(document).ready(function() {
    $("table").tablesorter({
    });
});
</script>

HTML:(需要对第三列进行排序)

<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 €&lt;/td> 
</tr> 


<tr>     
<td>bla bla bla</td> 
<td>bla bla bla</td> 
<td>1435 €&lt;/td> 
</tr> 


<tr>     
<td>bla bla bla</td> 
<td>bla bla bla</td> 
<td>190 €&lt;/td> 
</tr> 

    </tbody> 
</table>
4

6 回答 6

2

问题是价格列不被识别为数字列并被排序为字符串值。您可以强制排序器类型为数字(参见http://tablesorter.com/docs/example-meta-parsers.html中的示例)

于 2009-12-29T21:55:35.363 回答
1

问题在于,使用欧元符号时,它将数据视为字符串而不是数字。所以排序是按字符串而不是按数字进行的。

我的解决方案是从数据中删除欧元符号;然后向那些具有数值的单元格添加一个css类,该数值后显示一个欧元符号。

td.currency:after
{
  content: " €";
}
于 2009-12-29T21:54:54.553 回答
1

更好的选择是使用 tablesorter 中的自定义处理程序在排序之前删除欧元符号。这个方法可以处理我所看到的 HTML 代码和非 html 代码。

它是在页面底部的就绪功能上完成的

$("#tableSorterTable").tablesorter({
   // Define a custom function to ignore the euro
   textExtraction: function(node) {
      return node.innerHTML.replace(\'\u20AC\', "");
   }
});
于 2010-12-03T17:11:34.110 回答
0
于 2009-12-29T21:52:57.797 回答
0

欧元符号不是使整个值成为字符串的数字。字符串按“111、22、3”排序,而不是像数字那样按“3、22、111”排序。

最好将欧元符号放在单独的“货币”列中,例如

<td>1234</td>
<td>€&lt;/td>

如有必要,您可以添加colspan="2"到关联的<th>表头。

于 2009-12-29T21:56:52.663 回答
0

有一个支持本地化的更新版本。

于 2012-03-07T13:08:17.300 回答