当输入为数字时,Jquery tablesorter在类型文本的自定义解析器中生成错误

时间:2013-12-20 19:17:43

标签: jquery parsing tablesorter

我有一个简单的tablesorter,我在其中为列编写了自己的解析器。在PhP端,我生成一个数据属性,其值用作单元格的排序值。我的问题是,在自定义解析器中,当我返回Data -...值时,当给自定义解析器指定的类型是文本时,它会给出一个整数值的错误。人们通常会反过来期待这样的错误。 tablesorter.js生成的控制台错误是

        Uncaught TypeError: Object 11 has no method 'replace' 

其中11是分配给单元格的data-skaddress属性的数值。

 $.tablesorter.addParser({
    id: 'skaddress',
    is: function(s) {
      return false;
    },
    format: function(s, table, cell, cellIndex) {
      return $(cell).data('skaddress');  
    },
    type: 'text'  // <<<<-------- If this is changed to 'numeric', all is well
 });

换句话说,如果我有一个数字值分配给单元格的data-skaddress属性,那么当我认为'text'类型只是意味着任何字符串(包括所有数字)都被视为文本字段时,它会失败。生成错误的单元格的HTML标记是:

        <td  data-ssipaddress="11">12.29.14.97.190.111</td>

有什么方法吗?花了很多时间试图找到真正的解决方案。当然,有一些解决方法。例如,我可以在PhP端的长数字字符串之前生成固定的字母表。我需要一个文本字段而不是数字字段的原因是因为我的字符串由长数字串组成,但在示例中我只使用两个数字字符串。

请不要让我改用数据表。我喜欢tablesorter(由Mottie维护的那个?)因为它重量轻,非常适合我需要的东西,事实上我认为在某些方面比Datatables更好。我花了一些时间来掌握它。这个意想不到的问题......

更新:如果在分配给data-attribute的数字字符串前面放置前导零,则此方法有效!

由于

1 个答案:

答案 0 :(得分:1)

555和“555”之间存在差异。

传递它时,您必须确保您的值是一个字符串。你可以通过以下方式保证:

foo = foo + "";

如果foo是你的价值。