2011-11-22 66 views
2

我正在使用jQuery插件jquery-tablesorter-filter。它效果很好。當我想要計算表格被過濾後有多少行時,我遇到了問題。jQuery的tablesorter過濾器 - 如何計算過濾行

$("#tblContainer").tablesorter({ 
    debug: false, 
    sortList: [ 
     [0, 0] 
    ], 
    widgets: ['zebra'] 

}).tablesorterFilter({ 
    filterContainer: $("#filterBox"), 
    filterColumns: [1, 2], 
    filterCaseSensitive: false 
}); 

下面是計算過濾行(當前在屏幕上的行)的代碼。但它並沒有給我正確的結果。它給出了過濾行的最後一個計數,而不是當前計數。它總是給出一個關鍵中風的結果。

$("#filterBox").keyup(function() { 

    var textLength = $("#filterBox").val().length; 

    if (textLength > 0) { 

     var rowCount = $("#tblContainer tr:visible").length; 

     $("#countCourseRow").html(" found " + rowCount); 
    } else { 
     $("#countCourseRow").html(""); 
    } 

}); 
+0

你能解決這個問題嗎? – Mohit

回答

0

只要編輯你tablesorterFilter的js文件,添加一個回調函數:

只是return table;之前線147添加此被關閉的doFilter()

if (jQuery.isFunction(filter.callback)){ 
     filter.callback(); 
} 

然後改變這一點:

 this.defaults = { 
     filterContainer: '#filter-box', 
     filterClearContainer: '#filter-clear-button', 
     filterColumns: null, 
     filterCaseSensitive: false, 
     filterWaitTime: 500, 
     filterFunction: has_words, 
     columns: [] 
     }; 

 this.defaults = { 
     filterContainer: '#filter-box', 
     filterClearContainer: '#filter-clear-button', 
     filterColumns: null, 
     filterCaseSensitive: false, 
     filterWaitTime: 500, 
     filterFunction: has_words, 
     columns: [], 
     callback: function(){} 
     }; 

現在,你只需要在此處定義

}).tablesorterFilter({ 
    filterContainer: $("#filterBox"), 
    filterColumns: [1, 2], 
    filterCaseSensitive: false, 
    callback: function(){ 
     var rowCount = $("#tblContainer tr:visible").length; 
     $("#countCourseRow").html(" found " + rowCount); 
    } 
}); 

回調函數這應該爲你做:)

+0

我試過這個,但它不起作用。我修改了tbsorter-filter.js並添加了回調選項,並且像這樣從頁面嘗試了它。 callback:function(){ alert(「Yes」); } – Narazana

+0

你可以上傳它的地方,所以我可以看看它嗎?可能會創建一個jsfiddle ... – sally

+0

我剛剛在這裏爲你創建了一個jsfiddle: http://jsfiddle.net/X7uF8/ – sally

4

這有什麼錯內置的事件:http://mottie.github.com/tablesorter/docs/example-option-show-processing.html

的例子將如下所示:

$("#tblContainer").tablesorter({ 
debug: false, 
sortList: [ 
    [0, 0] 
], 
widgets: ['zebra'] 
}).bind('filterEnd', function() { 
    $("#countCourseRow").html(""); 
    $("#countCourseRow").html("found " + $('#myTable tr:visible').length); 
}); 
+0

啊,如果你有頭文件,你需要在長度之後加-2。 –

+0

我在可見的行上添加了上面的綁定。它更新了我在列之前添加的新標題。 .bind('filterEnd',function(){ /**** 更新應用過濾器時的行數 ****/ $('。tablesorter-header-inner span')。html($ ('tbody tr:visible')。length); }); –

+0

@FredrikErlandsson您的鏈接顯示過濾器,但我沒有看到那裏的行數,並且該解決方案也將與傳呼機一起使用? –

0

您的腳本中可能存在邏輯錯誤,否則最簡單的方法是獲取可見行的長度。

$('#table_id tr:visible').length) 
+0

這與分頁器小部件工作? –

+0

@JuanCarlosOropeza,試試吧。這應該。 – Saad

+0

不是。必須使用此[解決方案](http://stackoverflow.com/a/22568239/3470178) –