我正在尝试对包含字母数字数据的列进行排序,例如
遗憾的是,Tablesorter没有正确排序,即
任何帮助都将非常感激。谢谢!
答案 0 :(得分:3)
解决方案:
$.tablesorter.addParser({
id: 'alphanum',
is: function(s) {
return false;
},
format: function(s) {
var str = s.replace(/(\d{1,2})/g, function(a){
return pad(a);
});
return str;
},
type: 'text'
});
function pad(num ){
var s = '00000' + num;
return s.substr(s.length-5);
}
答案 1 :(得分:2)
http://tablesorter.com/docs/example-parsers.html
因此,这个例子向您展示了如何创建自己的排序逻辑。看看函数:
format: function(s) {
// format your data for normalization
return s.toLowerCase().replace(/good/,2).replace(/medium/,1).replace(/bad/,0);
},
您需要编写一个javascript函数来获取字符串“sometext3”的文本和数字部分,然后使用零填充“sometext00000003”格式化数字,这将修复您的排序问题,并且不会更改它在客户端中的显示方式
这是一个基本的例子:
<script>
function normalizeAlphaNumeric(text) {
r = new RegExp("([^\\d]*)(\\d*)");
var match = r.exec(text);
return match[1] + pad(match[2]);
}
function pad(num) {
var s = "000000000" + num;
return s.substr(s.length-8); // i chose 8
}
document.write(normalizeAlphaNumeric("sometext1") + "<br/>");
document.write(normalizeAlphaNumeric("sometext2")+ "<br/>");
document.write(normalizeAlphaNumeric("sometext3")+ "<br/>");
document.write(normalizeAlphaNumeric("sometext10")+ "<br/>");
</script>
这个输出是:
sometext00000001
sometext00000002
sometext00000003
sometext00000010
现在可以排序。