2012-11-18 156 views
4

我有一個幾乎按照我喜歡的方式運行的tablesorter,還有一件事我不知道該怎麼做。Tablesorter排序;多個複選框,多列

現在,我有表,你可以在搜索欄,您可以快速地通過按下一個按鈕,放在一個欄的搜索字段中的值過濾表。

問題是我希望人們能夠檢查多個複選框,以便根據此輸入過濾表格。這些複選框是「分組」的,每個組應過濾他的相應列(例如,檢查不同月份應過濾月份列)。應該可以檢查多個組中的多個複選框。例如,您可以查看'荷蘭','比利時',它在國家/地區列上進行過濾,並檢查在「月份」列中添加過濾器的「八月」和「九月」。你可以查看我的示例網站,看看我的意思。

複選框不應該在搜索字段中輸入它們的值,例如現在按鈕。

最後,我想包括一個按鈕,它會清除所有的搜索查詢和爲此重置表(它現在已經做),但它也應該取消所有的複選框。

我不是一個程序員,但有一些基本的知識,大量的研究和反覆試驗,我設法拿到的tablesorter運行。我真的希望有一種方法來處理複選框。

示例頁面:http://www.yellowtipi.nl/tablesortertest/index.html(這是一個無樣式的版本,使代碼清晰,最終版本將有超過100行)。

如果有什麼不清楚的,請告訴我!

回答

2

所有你需要做的是註釋掉或刪除,一條線 - filters.val('');

下面是代碼,並a demo(我說清楚鍵可在各集以及允許清除過濾柱)

$('button.search').click(function() { 
    var filters = $('table').find('input.tablesorter-filter'), 
     col = $(this).data('filter-column'), 
     txt = $(this).data('filter-text'); 
    // filters.val(''); 
    filters.eq(col).val(txt).trigger('search', false); 
}); 

此外,該代碼需要我fork of tablesorter爲了工作。下面是其他可能感興趣的代碼:(我刪除的數據解析代碼和缺省過濾器插件選項,以避免混淆)

<button class="search" data-filter-column="4" data-filter-text="Netherlands">Netherlands</button> 
<button class="search" data-filter-column="4" data-filter-text="Belgium">Belgium</button> 
<button class="search" data-filter-column="4" data-filter-text="Germany">Germany</button> 
<button class="search" data-filter-column="4" data-filter-text="">Clear</button> 

<table id="festivaloverzichttable" class="tablesorter"> 
    <thead> 
    <tr> 
     <th width="17%" data-placeholder="Search...">Event</th> 
     <th width="18%" data-placeholder="Search...">Date</th> 
     <th width="9%" data-placeholder="Search...">Duration</th> 
     <th width="12%" data-placeholder="Search...">Place</th> 
     <th width="10%" data-placeholder="Search...">Country</th> 
     <th data-placeholder="Zoek...">Genre(s)</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td>Event 1</td> 
     <td data-date="06-02">TBA</td> 
     <td>2</td> 
     <td>Oisterwijk</td> 
     <td>Netherlands</td> 
     <td>Hardstyle</td> 
    </tr> 
    <tr> 
     <td>Event 2</td> 
     <td data-date="10-11">11 October t/m 13 October</td> 
     <td>3</td> 
     <td>Volkel</td> 
     <td>Netherlands</td> 
     <td>Pop, Rock, Urban, Electronic</td> 
    </tr> 
    <tr> 
     <td>Event 3</td> 
     <td data-date="06-02">TBA</td> 
     <td>1</td> 
     <td>Amsterdam</td> 
     <td>Netherlands</td> 
     <td>Electronic</td> 
    </tr> 
    <tr> 
     <td>Event 4</td> 
     <td data-date="09-01">TBA</td> 
     <td>1</td> 
     <td>Utrecht</td> 
     <td>Netherlands</td> 
     <td>Electronic, Urban</td> 
    </tr> 
    <tr> 
     <td>Event 5</td> 
     <td data-date="07-06">6 July - 7 July</td> 
     <td>2</td> 
     <td>Beek en Donk</td> 
     <td>Netherlands</td> 
     <td>Electronic, Hardstyle</td> 
    </tr> 

    ... 

    </tbody> 
</table>​ 

的Javascript

$("#festivaloverzichttable").tablesorter({ 
    sortList: [[0, 0]], 
    widgets: ['zebra', 'filter', 'saveSort'], 
    widgetOptions: { 
     filter_reset: 'button.reset' 
    } 
}); 

$('button.search').click(function() { 
    var filters = $('table').find('input.tablesorter-filter'), 
     col = $(this).data('filter-column'), 
     txt = $(this).data('filter-text'); 
    filters.eq(col).val(txt).trigger('search', false); 
}); 

HTML例子

更新:要允許多個選項,按鈕搜索更改爲以下(updated demo

$('button.search').click(function() { 
    var filters = $('table').find('input.tablesorter-filter'), 
     col = $(this).data('filter-column'), 
     txt = $(this).data('filter-text'), 
     cur = filters.eq(col).val(), 
     mult, i; 

    if (cur && txt !== '') { 
     mult = cur.split('|'); 
     i = $.inArray(txt, mult); 
     if (i < 0) { 
      mult.push(txt); 
     } else { 
      mult.splice(i,1); 
     } 
     txt = mult.join('|'); 
    }   
    filters.eq(col).val(txt).trigger('search', false); 
}); 
+0

嗨@Mottie,非常感謝!問題是,在我發佈我的問題後,我意識到訪問者應該能夠使用複選框檢查每個類別中的多個選項。那麼你可以檢查多個國家,幾個月和流派。我前幾天編輯過我的問題,我的意思是,解釋見:[link](http://yellowtipi.nl/tablesortertest/index2.html)。我認爲這是按鈕解決方案的一小步。這可能嗎? – eskimo

+0

好吧,我已經更新了我的答案 - 這裏是一個[新的演示](http:// jsfiddle。net/abkNM/112 /) - 請注意,再次單擊某個按鈕會從過濾器中刪除該值。 – Mottie

+0

嗨Mottie,再次感謝我非常感謝你的幫助!還有一些問題:1)點擊清除按鈕不會清空搜索框(就像重置按鈕一樣),2)現在是OR語句。如果我單擊電子和城市,那麼具有「電子」值的單元格仍然顯示操作。有可能使它成爲AND語句?然後選擇電子和城市應該仍然顯示包含「流行,電子,城市」的單元。我認爲使用此功能最好使用複選框而不是按鈕。對最終用戶來說會更清楚。那可能嗎? – eskimo