Tablesorter不会对“ - ”符号进行排序

时间:2015-02-16 11:22:54

标签: javascript tablesorter

当列包含" - "

tablesorter不会在Subject列上工作如:

Name Subject
Anton    -
Max     "dfdsrv"
Anna    "fdsf"

但如果我添加带有spec符号的字符串,它将正常工作!

Name Subject
Anton    -
Max     "<dfdsrv>"//correctly working
Anna    "fdsf"

P.S不幸的是我们使用旧的tablesorter版本2.0.5。 我怎么解决这个问题?我替换了&#34; - &#34;对于空字符串,但它仍然无法正常工作。也许我误会了某个地方?

textExtraction: function(node) {
      if (node.innerHTML.text == "-"){
        return " "; 
      } 
}

2 个答案:

答案 0 :(得分:2)

这是默认设置的已知问题。 Tablesorter支持解析器,用于对文本,URI,整数,货币,浮点数,IP地址,日期(ISO,长和短格式),时间进行排序。

要解决您的问题,您应该配置tablesorter以使用text parser

$(".tbl").tablesorter({
    headers: {
        0: { sorter:'text' }
    }
});

http://tablesorter.com/docs/#Configuration

在更复杂的场景中(例如重新格式化,替换等),一种可行的方法是使用$.tablesorter.addParser方法向tablesorter添加自定义解析器。

http://tablesorter.com/docs/example-parsers.html

答案 1 :(得分:1)

这是一系列问题。

  1. textExtraction函数需要始终返回html:
  2. 正如@TheZenCoder所说,解析器需要设置为&#34; text&#34 ;;这是由于&#34; - &#34;在列的第一个单元格中。解析器被设置为&#34; digit&#34;因为它认为&#34; - &#34;是一个负号。
  3. 以下是完整代码(&amp; demo):

    $('table').tablesorter({
        textExtraction: function (node) {
            var txt = node.innerHTML;
            if (txt == "-") {
                return " ";
            }
            return txt;
        },
        headers : {
            1: { sorter: 'text' }
        }
    });
    

    *注意:如果表格单元格中有任何制表符,空格或其他格式,例如

    <td>
      -
    </td>
    

    然后您需要修剪结果以获得准确的比较:

    var txt = $.trim( node.innerHTML );
    if (txt == "-") {