jQuery Tablesorter-对字母数字列进行排序
我试图对包含字母数字数据的列进行排序,例如jQuery Tablesorter-对字母数字列进行排序,jquery,tablesorter,Jquery,Tablesorter,我试图对包含字母数字数据的列进行排序,例如 sometext1 sometext2 sometext3 一些文本10 不幸的是,Tablesorter没有正确排序,即 sometext1 一些文本10 sometext2 sometext3 任何帮助都将不胜感激。谢谢 因此,本例向您展示了如何创建自己的排序逻辑。请看函数: format: function(s) { // format your data for normalization
- sometext1
- sometext2
- sometext3
- 一些文本10
- sometext1
- 一些文本10
- sometext2
- sometext3
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>
现在可以排序了。解决方案:
$.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);
}
$.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);
}