Javascript jQuery Tablesorter对前导为0';s(使用解析器时:text)

Javascript jQuery Tablesorter对前导为0';s(使用解析器时:text),javascript,jquery,sorting,tablesorter,Javascript,Jquery,Sorting,Tablesorter,我正在使用的是当前的master,我已经从更新为,以便能够使用Filter小部件。但在这样做的过程中,我遇到了一个问题,当要求使用“文本”分类器时,它似乎无法用前导0对数字进行排序 例如: headers: 0: sorter: 'text' 在具有值的列上 001 一, 一, 01 一, 0001 我希望得到一个排序值 0001 001 01 一, 一, 一, 但它似乎将其解析为数字,因为前导0对排序顺序没有影响 jsFiddles: 我在这里创建了一个基本的JSFIDL

我正在使用的是当前的master,我已经从更新为,以便能够使用Filter小部件。但在这样做的过程中,我遇到了一个问题,当要求使用“文本”分类器时,它似乎无法用前导0对数字进行排序

例如:

headers:
  0:
    sorter: 'text'
在具有值的列上

  • 001
  • 一,
  • 一,
  • 01
  • 一,
  • 0001
我希望得到一个排序值

  • 0001
  • 001
  • 01
  • 一,
  • 一,
  • 一,
但它似乎将其解析为数字,因为前导0对排序顺序没有影响

jsFiddles:

我在这里创建了一个基本的JSFIDLE:显示我的需要

显示排序正在“工作”,但似乎正在剥离前导的0,这对我来说意味着排序是一个数字

我在最新版本的jQuery1、2和3中尝试了这一点


注意这是正确的,但是新的fork似乎有问题

fork of tablesorter用自然排序算法取代了基本的文本排序,因此像
01
0001
这样的值被解析并视为相同的值

要解决此问题,可以将设置为使用基本文本排序(与原始版本相同),如下所示()

或者,您可以创建自定义解析器来修改缓存值以调整排序顺序()


谢谢@Mottie!我最终将此作为默认设置,并像一个符咒一样工作<代码>$.tablesorter.Default.textSorter=$.tablesorter.sortText我添加了一个更新的leadingZeros解析器(),其中有一个演示,显示了使用
sortText
方法的问题。它尚未发布,但可以在主分支中使用。
$(function() {
  $("#tablesorter-example").tablesorter({
    textSorter: {
      1: $.tablesorter.sortText
    },
    headers: {
      1: { sorter: 'text' }
    }
  });
});
$(function() {
  $.tablesorter.addParser({
    id: 'leadingZeros',
    is: function() {
      return false;
    },
    format: function(s, table) {
      var number = parseFloat(s),
        str = number.toString();
      if (s.length !== str.length) {
        // subtract a decimal equivalent of the string length
        // so "0001" sorts before "01"
        number -= 0.00000001 * (s.length - str.length);
      }
      return number;
    },
    type: 'number'
  });
  $("#tablesorter-example").tablesorter({
    headers: {
      1: { sorter: 'leadingZeros' }
    }
  });
});