Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery Tablesorter-对字母数字列进行排序_Jquery_Tablesorter - Fatal编程技术网

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
不幸的是,Tablesorter没有正确排序,即

  • 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);
    }