所有你需要做的是註釋掉或刪除,一條線 - 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);
});
嗨@Mottie,非常感謝!問題是,在我發佈我的問題後,我意識到訪問者應該能夠使用複選框檢查每個類別中的多個選項。那麼你可以檢查多個國家,幾個月和流派。我前幾天編輯過我的問題,我的意思是,解釋見:[link](http://yellowtipi.nl/tablesortertest/index2.html)。我認爲這是按鈕解決方案的一小步。這可能嗎? – eskimo
好吧,我已經更新了我的答案 - 這裏是一個[新的演示](http:// jsfiddle。net/abkNM/112 /) - 請注意,再次單擊某個按鈕會從過濾器中刪除該值。 – Mottie
嗨Mottie,再次感謝我非常感謝你的幫助!還有一些問題:1)點擊清除按鈕不會清空搜索框(就像重置按鈕一樣),2)現在是OR語句。如果我單擊電子和城市,那麼具有「電子」值的單元格仍然顯示操作。有可能使它成爲AND語句?然後選擇電子和城市應該仍然顯示包含「流行,電子,城市」的單元。我認爲使用此功能最好使用複選框而不是按鈕。對最終用戶來說會更清楚。那可能嗎? – eskimo