2010-10-21 111 views
2

我目前正在試圖實現jQuery的tablesorter和我的列之一是文件大小,我發現這段代碼片段,但我不斷收到錯誤。jquery tablesorter和文件大小

如果有人能幫助我,那會很棒。

的jQuery的tablesorter:http://tablesorter.com/

的jQuery的tablesorter作品尺寸代碼:http://groups.google.com/group/jquery-en/browse_thread/thread/fd5729a7175f6710?fwc=1

我表:

<table cellspacing="0" cellpadding="0" class="tablesorter"> 
    <thead> 
    <tr> 
     <th valign="middle" align="left" class="filebox header"><input type="checkbox" id="checkboxAll" name="checkboxAll"></th> 
     <th valign="middle" align="left" class="header filename"><strong>Filename</strong></th> 
     <th valign="middle" align="left" class="header filesize"><strong>Size</strong></th> 
     <th valign="middle" align="left" class="header filedate"><strong>Date</strong></th> 
    </tr> 
    </thead> 
    <tbody class="file"> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox[]" name="checkbox[]"></td> 
     <td valign="middle" align="left" class="filename">002.jpg</td> 
     <td valign="middle" align="left" class="filesize">113 kb</td> 
     <td valign="middle" align="left" class="filedate">21/10/2010 12:18</td> 
    </tr> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox[]" name="checkbox[]"></td> 
     <td valign="middle" align="left" class="filename">kasper.jpg</td> 
     <td valign="middle" align="left" class="filesize">41 kb</td> 
     <td valign="middle" align="left" class="filedate">05/07/2010 11:33</td> 
    </tr> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox[]" name="checkbox[]"></td> 
     <td valign="middle" align="left" class="filename">Linda__Angela.jpg</td> 
     <td valign="middle" align="left" class="filesize">212 kb</td> 
     <td valign="middle" align="left" class="filedate">05/07/2010 11:46</td> 
    </tr> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox[]" name="checkbox[]"></td> 
     <td valign="middle" align="left" class="filename">loader.gif</td> 
     <td valign="middle" align="left" class="filesize">5 kb</td> 
     <td valign="middle" align="left" class="filedate">05/07/2010 11:33</td> 
    </tr> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox[]" name="checkbox[]"></td> 
     <td valign="middle" align="left" class="filename">Lucas.jpg</td> 
     <td valign="middle" align="left" class="filesize">111 kb</td> 
     <td valign="middle" align="left" class="filedate">05/07/2010 11:46</td> 
    </tr> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox[]" name="checkbox[]"></td> 
     <td valign="middle" align="left" class="filename">people.psd</td> 
     <td valign="middle" align="left" class="filesize">2 mb</td> 
     <td valign="middle" align="left" class="filedate">05/07/2010 11:33</td> 
    </tr> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox[]" name="checkbox[]"></td> 
     <td valign="middle" align="left" class="filename">people1.jpg</td> 
     <td valign="middle" align="left" class="filesize">16 kb</td> 
     <td valign="middle" align="left" class="filedate">05/07/2010 11:33</td> 
    </tr> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox[]" name="checkbox[]"></td> 
     <td valign="middle" align="left" class="filename">P_750g_Basmati_FCollection.zip</td> 
     <td valign="middle" align="left" class="filesize">265 mb</td> 
     <td valign="middle" align="left" class="filedate">05/07/2010 11:46</td> 
    </tr> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox[]" name="checkbox[]"></td> 
     <td valign="middle" align="left" class="filename">T_2kg_LongWhite_FCollection.zip</td> 
     <td valign="middle" align="left" class="filesize">441 mb</td> 
     <td valign="middle" align="left" class="filedate">05/07/2010 11:50</td> 
    </tr> 
    </tbody> 
</table> 

我的jQuery代碼:

jQuery(document).ready(function() { 

      jQuery.tablesorter.addParser({ 
      id: 'filesize', 
      is: function(s) { 
      return s.match(new RegExp(/[0-9]+(\.[0-9]+)?\ (KB|B|GB|MB|TB)/)); 
      }, 
      format: function(s) { 
       var suf = s.match(new RegExp(/(KB|B|GB|MB|TB)$/))[1]; 
       var num = parseFloat(s.match(new RegExp(/^[0-9]+(\.[0-9]+)?/))[0]); 
       switch(suf) { 
       case 'B': 
        return num; 
       case 'KB': 
        return num * 1024; 
       case 'MB': 
        return num * 1024 * 1024; 
       case 'GB': 
        return num * 1024 * 1024 * 1024; 
       case 'TB': 
        return num * 1024 * 1024 * 1024 * 1024; 
       } 
      }, 
      type: 'numeric' 
      }); 

      jQuery(".tablesorter").tablesorter({ 
      headers: { 
       2: { sorter: 'filesize' } 
      }         
      }); 
     }); 

錯誤:

s.match(新正則表達式(/(KB | B | GB | MB | TB)$ /))是空

回答

4

我的猜測是,正則表達式區分大小寫。正則表達式包含B,KB,MB等,但您的值是b,kB,mB等。

在正則表達式後添加「i」使其不區分大小寫。像這樣:

new RegExp(/[0-9]+(\.[0-9]+)?\ (KB|B|GB|MB|TB)/i) 

new RegExp(/^[0-9]+(\.[0-9]+)?/i) 
+0

唉它是區分大小寫的。謝謝 :) – SoulieBaby 2010-10-21 04:06:03

1

也許正則表達式應該看起來像這樣?

s.match(new RegExp(/.*(KB|B|GB|MB|TB)$/)) 

既然你要忽略的數字部分有...