【发布时间】:2018-10-04 20:48:58
【问题描述】:
我想通过 2 个选择列表过滤(隐藏除已选择之外的所有)表行中的多个条目。 第一个包含国家,第二个包含年份。
我可以编写一个按单个参数过滤的脚本,但是当用户选择德国和 2017 年(显示 2017 年德国的所有项目)时如何扩展功能?
<select class="form-control" id="filter-by-country">
<option selected="selected">COUNTRY</option>
<option>ALL</option>
<option>Belgium</option>
<option>Germany</option>
<option>Russia</option>
</select>
<select class="form-control" id="filter-by-year">
<option selected="selected">COUNTRY</option>
<option>ALL</option>
<option>2018</option>
<option>2017</option>
<option>2016</option>
<option>2015</option>
</select>
<table class="table table-hover all-projects">
<thead>
<tr>
<th scope="col">order date</th>
<th scope="col">project id</th>
<th scope="col">full project's name</th>
<th scope="col">quantity</th>
<th scope="col">order no</th>
</tr>
</thead>
<tbody>
<tr class="text-center belgium 2018">
<td>27.09.2018</td>
<td></td>
<td class="text-left">First project</td>
<td>0</td>
<td></td>
</tr>
<tr class="text-center germany 2017">
<td>27.09.2017</td>
<td>5461</td>
<td class="text-left">Second project</td>
<td>0</td>
<td></td>
</tr>
<tr class="text-center russia 2016">
<td>27.09.2016</td>
<td>5462</td>
<td class="text-left">Third project</td>
<td>0</td>
<td></td>
</tr>
<tr class="text-center russia 2018">
<td>27.09.2018</td>
<td>5462</td>
<td class="text-left">Fourth project</td>
<td>0</td>
<td></td>
</tr>
<tbody>
</table>
【问题讨论】:
-
我们无法真正向您展示如何扩展您的脚本以处理多个过滤器而不实际看到它...
-
请分享您尝试过的代码。
-
您的尝试在哪里?我没有看到任何试图实现您所描述的 JavaScript 尝试。
-
没有什么比
$('tr').hide(); $('tr.germany.2017').show();更容易的了...但是,我希望你想写一个好的和可维护的代码。此外,您的下拉列表缺少选项的值。 -
您可以在下拉列表更改事件中执行
var data = $("#TABLEID tr." + $('#filter-by-country').val().toLowerCase() + "." + $("filter-by-year").val().toLowerCase()); $('#TABLEID').html(data);之类的操作,但您需要在下拉列表中为选项“ALL”添加条件。