Tablesorter 用连字符对数字字段进行排序
Tablesorter sort numeric field with hyphen
我有一个 table 以 YYYY-#### 格式绑定数据。在某些情况下,可能有值 2012-456 和 2012-1234。默认情况下,2012-1234 将 'before' 排序为 2012-456。如果我将排序更改为 'numeric',那么它会抛出其他年份(例如:将按 2012-456、2013-555、2012-1234 的顺序排序)。我猜如果少于 4 位数字,我必须在连字符后的数字前面加上 0,但我无法让分拣机工作。我试过 .addParser 但我不熟悉它并且没有成功。是否有任何关于我正在寻找的好文章,或者有人知道实现这一目标的方法吗?
这是一个排序不正确的示例数据图像,需要按年份(前 4 位数字)排序,然后是连字符后的数字:
**此外,日期显然应该采用更好的格式,但在这种情况下我无法调整输入方式。
进一步调试后,我终于能够让 .addParser() 工作,并尽可能地压缩代码。我猜是因为我是 javascript 的新手(大概),我没有意识到 .length 在我的 html 中计算空格 and/or returns。
$('.tablesorter').tablesorter({
widgets: ['zebra'],
headers: {
0: {
sorter: 'licenseYear'
}
}
})
$.tablesorter.addParser({
id: 'licenseYear',
is: function (s) {
return false;
},
format: function (s) {
//pad zeros for max length of digits after hyphen
var pad = "0000";
//replace hyphen with needed zeros to pad number
var n = s.replace(/-/, pad.substring(s.length - 5));
return n;
},
type: 'numeric'
});
*编辑:在这个线程的帮助下压缩了关于填充左的代码:convert '1' to '0001' in JavaScript
我有一个 table 以 YYYY-#### 格式绑定数据。在某些情况下,可能有值 2012-456 和 2012-1234。默认情况下,2012-1234 将 'before' 排序为 2012-456。如果我将排序更改为 'numeric',那么它会抛出其他年份(例如:将按 2012-456、2013-555、2012-1234 的顺序排序)。我猜如果少于 4 位数字,我必须在连字符后的数字前面加上 0,但我无法让分拣机工作。我试过 .addParser 但我不熟悉它并且没有成功。是否有任何关于我正在寻找的好文章,或者有人知道实现这一目标的方法吗?
这是一个排序不正确的示例数据图像,需要按年份(前 4 位数字)排序,然后是连字符后的数字:
**此外,日期显然应该采用更好的格式,但在这种情况下我无法调整输入方式。
进一步调试后,我终于能够让 .addParser() 工作,并尽可能地压缩代码。我猜是因为我是 javascript 的新手(大概),我没有意识到 .length 在我的 html 中计算空格 and/or returns。
$('.tablesorter').tablesorter({
widgets: ['zebra'],
headers: {
0: {
sorter: 'licenseYear'
}
}
})
$.tablesorter.addParser({
id: 'licenseYear',
is: function (s) {
return false;
},
format: function (s) {
//pad zeros for max length of digits after hyphen
var pad = "0000";
//replace hyphen with needed zeros to pad number
var n = s.replace(/-/, pad.substring(s.length - 5));
return n;
},
type: 'numeric'
});
*编辑:在这个线程的帮助下压缩了关于填充左的代码:convert '1' to '0001' in JavaScript