2012-05-03 23 views
0

在我的Web應用程序中,我維護了用戶記錄的表。在客戶端發送時添加和刪除記錄,並且用戶單擊保存按鈕以保存在服務器上完成的所有操作。jQuery TableSorter只能在ID(數字字段)上工作,而不能在文本,日期等字段上使用

我已經應用表分揀機的表上的排序功能。但令人意外的排序功能工作正常進行,即表的第一場唯一的ID字段,但所有其他字段,它(從鉻錯誤跟蹤)給錯誤

Uncaught TypeError: Cannot read property 'type' of undefined 
multisortjquery.tablesorter.js:600 
$.extend.tablesorter.construct.each.$headers.click.mousedown.onselectstart 

這裏是表結構。

<table id="contentTable" class="tablesorter"> 
         <thead> 
          <tr> 
           <th> ID </th> 
           <th> Name </th> 
           <th> Birth Date </th> 
           <th> City </th> 
           <th id="actionheader"> Action</th> 
          </tr> 
         </thead> 
         <tbody> 
          <tr> 
           <td></td> 
          </tr> 
         </tbody> 
        </table> 

在此我動態添加數據。 在這種情況下,排序工作正常,只有第一個字段即ID字段

這是我如何初始化tableSorting。

function initializeTableSorting() { 
     $("#contentTable").tablesorter({ 
      sortList : [[0, 0]], 
      headers : { 
       0 : { 
        sorter : "integer" 
       }, 
       1 : { 
        sorter : "text" 
       }, 
       2 : { 
        sorter : false 
       }, 
       3 : { 
        sorter : "text" 
       }, 
       4 : { 
        sorter : false 
       } 
      } 
     }); 
    } 

我怎樣才能使這項工作的所有領域,甚至也爲日期字段,如果我刪除從初始化錯誤的選擇?

回答

0

我不能重複報告的錯誤,但是如果我按照程序邏輯...

你所描述的錯誤在這行代碼時:

var s = (table.config.parsers[c].type == "text") ... 

這意味着parsers[c]不存在。變量c只是列索引。所以,如果我不得不猜測,我會說有一個自定義分析器,但它沒有定義類型屬性。

// default text parser 
ts.addParser({ 
    id: "text", 
    is: function (s) { 
     return true; 
    }, 
    format: function (s) { 
     return $.trim(s.toLocaleLowerCase()); 
    }, 
    type: "text" 
}); 

或者,它可能是與sortList的定義有關的問題。確保方括號的正確數量是圍繞變量:

var sorting = [[0, 0]]; 
$("#contentTable").trigger("sorton", [sorting]); 

或以壓縮形式:

// more than one column -> [[ [0,0], [1,0] ]] 
$("#contentTable").trigger("sorton", [[[0, 0]]]); 

試用this demo

0

這確實是一個奇怪的問題,example似乎並不工作(在Mac上的Chrome)。另外,我recreated your situation,並再次,不正確的排序。雖然,我沒有得到你描述的錯誤。

我之前有過TableSorter的這個問題,並且當時無法識別問題。如果我沒有記錯,它與插件執行的緩存有關。

+0

在我的最後一個例子工作正常......還如果我在靜態表上應用庫一切正常,但我動態添加數據然後它會產生問題。 – dhroove

6

已經「完全相同」同樣的問題,不知道怎麼樣解決它,花了一段時間,但終於認爲我提供的tableSorter在數據中有一個空行(後跟有效行)。因此,雖然我可以在HTML中看到有效的數據,但在源代碼中,我錯過了一個空的前一行......這可能是搞砸了TableSorter JS。

刪除開始的空行(之後的thead,但在任何其他數據之前)並且此問題已得到解決。

+0

同樣的事情發生在我身上,除了我的表格中有無效的html - 顯然'tr'不應該在另一個'tr'中出現;) –

0

剛剛發生在我身上。它會對純數字字段進行排序,但不會通過文本進行任何操作。當我按這些文本列進行排序時,我在開發工具控制檯中返回了「未定義」錯誤。

修復?結束了我的一個無關的函數未定義。

相關問題