【发布时间】:2014-06-27 22:50:28
【问题描述】:
我正在开发一个多列多词过滤搜索,遇到两个问题:
- 我只能部分过滤第一列;部分,因为输入 apple 它会在第一列显示苹果和橙子。
- 我正在努力寻找一种方法,使其在两列上都进行多词搜索。
我找到了a table filtering techniques on SO 和 adjusted them in this fiddle。但是这段代码只会用一个词过滤所有列。输入多个单词以缩小结果范围(查找A and B)不起作用。
下面的代码是我尝试在单个框中执行多列多词搜索see my fiddle。
如何实现对组合搜索词组的多列的过滤?
意思是只显示存在searchphrase-1 and searchphrase-2 的行。
JS
var $orig_rows1 = $('#table tbody tr td[class = "col1"]');
var $orig_rows2 = $('#table tbody tr td[class = "col2"]');
$('#search').keyup(function() {
var $rows1 = $orig_rows1;
var $rows2 = $orig_rows2;
var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
reg = RegExp(val, 'i'),
text;
$("tr:hidden").show();
$rows1.show().filter(function() {
text = $(this).text().replace(/\s+/g, ' ');
return !reg.test(text);
}).parent("tr").hide();
});
HTML
<input type="text" id="search" placeholder="Type to search title 1">
<table class="table-striped" id="table">
<thead>
<th>Title 1</th>
<th>Title 2</th>
</thead>
<tbody>
<tr>
<td class="col1">Apple</td>
<td class="col2">Green</td>
</tr>
<tr>
<td class="col1">Grapes</td>
<td class="col2">Green</td>
</tr>
</tbody>
<tr>
<td>Orange</td>
<td>Orange</td>
</tr>
</table>
任何建议都会很棒。
【问题讨论】:
标签: html html-table filtering