Tablesorter排序; 多个复选框,多列

我有一个几乎按照我希望的方式运行的tableorter,还有一件我不知道该怎么做的事情。

现在,我有一个表格,您可以在其中搜索列,您可以通过按下一个按钮来快速过滤表格,该按钮将值放在列的搜索字段中。

问题是我希望人们能够检查多个复选框,以便根据此输入过滤表格。 这些复选框是“分组”的,每个组应在其相应的列上进行过滤(例如,检查不同月份应过滤月份列)。 应该可以检查多个组中的多个复选框。 例如,您可以选中“荷兰”,“比利时”,它会在国家/地区列中进行过滤,并选中“八月”和“九月”,它们会在月份列中添加filter。 你可以查看我的示例网站,看看我的意思。

复选框不应在搜索字段中输入它们的值,就像现在的按钮一样。

最后,我想要包含一个清除所有搜索查询的按钮,然后重置表格(现在已经完成),但它也应该取消选中所有复选框。

我不是程序员,但有一些基础知识,大量的研究和试验和错误,我设法让tableorter运行。 我真的希望有办法使用复选框。

示例页面: http ://www.yellowtipi.nl/tablesortertest/index.html(这是一个非常简洁的版本,使代码清晰,最终版本将有100多行)。

如有任何不明之处请告诉我!

您需要做的就是注释掉或删除一行 – filters.val('');

这是代码和演示 (我为每个集添加了清除按钮以允许清除filter列)

 $('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); }); 

此外,此代码需要我的forkorter fork才能工作。 以下是可能感兴趣的其他人的代码:

HTML示例:

      ... 
Event Date Duration Place Country Genre(s)
Event 1 TBA 2 Oisterwijk Netherlands Hardstyle
Event 2 11 October t/m 13 October 3 Volkel Netherlands Pop, Rock, Urban, Electronic
Event 3 TBA 1 Amsterdam Netherlands Electronic
Event 4 TBA 1 Utrecht Netherlands Electronic, Urban
Event 5 6 July - 7 July 2 Beek en Donk Netherlands Electronic, Hardstyle

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); }); 

更新:要允许多个选项,请将按钮搜索更改为以下内容( 更新的演示 )

 $('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); });