2011-07-14 13 views
1

英数字のデータを含む列をソートしようとしています。残念ながらTablesorterしないソート正しくすなわちjQuery Tablesorter - 英数字列の並べ替え

  • sometext1
  • sometext10

    • sometext1
    • sometext2
    • sometext3
    • sometext10

  • sometext2
  • sometext3

すべてのヘルプは、最も高く評価されるだろう。ありがとう!だから、

答えて

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

http://tablesorter.com/docs/example-parsers.html

、この例では、関数で、独自の注文logic.Lookを作成する方法を示しています

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 

はここで初歩的な例です。

+0

は正しい方向に私を指してくれてありがとう! – benjamunky

関連する問題