tablesorter& amp; Jquery排序价格与欧元符号

时间:2009-12-29 21:46:56

标签: jquery sorting tablesorter

我的问题涉及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>

6 个答案:

答案 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)

问题似乎是数字被解释为文本,而不是数字。 (正如文字1231234都在2之前,因为12之前。)这可能是因为你在你正在排序的表达。

尝试剥离€,排序,然后再次添加€。 (或者,为€添加一个单独的列,您不允许对其进行排序,以便排序列中的数据纯粹是数字。)

简单版本:

<tr>
    <td>bla bla</td>
    <td>bla bla</td>
    <td>bla bla</td>
    <td>123</td>
    <td>&euro;</td>
</tr>

请注意,我使用的是&euro;而不是,只是为了确保浏览器能够正确呈现它。

答案 4 :(得分:0)

欧元符号不是使整个值成为String的数字。字符串的编号为“111,22,3”,而不是编号为“3,22,111”。

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

<td>1234</td>
<td>€</td>

您可以根据需要将colspan="2"添加到关联的<th>表标题。

答案 5 :(得分:0)

updated version支持本地化。