javascript - 在表格中实时搜索特定列
问题描述
我目前正在尝试为表中的特定列创建实时搜索。我搜索了一下,但我只能找到搜索所有列的解决方案。这是我的代码:
function searchInTable(table) {
var value = this.value.toLowerCase().trim();
jQuery(table).each(function (index) {
if (!index) return;
jQuery(this).find("td").each(function () {
var id = $(this).text().toLowerCase().trim();
var not_found = (id.indexOf(value) == -1);
$(this).closest('tr').toggle(!not_found);
return not_found;
});
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="search-table-input" class="search-table-input" type="text"
onkeyup="searchInTable('.table tr')" placeholder="Search Number...">
<table class="table">
<thead>
<tr>
<th class="table-number">
<span class="nobr">Number</span>
</th>
<th class="table-date">
<span class="nobr">Date</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<a>264</a>
</td>
<td>
<span>2019-01-02</span>
</td>
</tr>
<tr>
<td>
<a>967</a>
</td>
<td>
<span>2019-01-02</span>
</td>
</tr>
<tr>
<td>
<a>385</a>
</td>
<td>
<span>2019-01-02</span>
</td>
</tr>
<tr>
<td>
<a>642</a>
</td>
<td>
<span>2019-01-02</span>
</td>
</tr>
</tbody>
</table>
我的函数有一些错误,不能正常工作。
我怎样才能改变我的功能,当我开始输入时只过滤数字?我需要动态地创建函数,以便我可以传递应该用于搜索的列。
解决方案
导致它搜索所有列的行是这一行:
jQuery(this).find("td").each(function () {
...它获取当前行中的每个单元格并查看它是否包含value
. 如果您只想检查特定列,您应该将列索引作为类似的东西传递columnIndex
,然后您可以通过执行选择正确的列jQuery(this).find("td").eq(columnIndex)
,使用 jQuery 的.eq()
函数来选择正确的列。代码应如下所示:
function searchInTableColumn(table, columnIndex) {
//check this.value exists to avoid errors
var value = this.value ? this.value.toLowerCase().trim() : "";
jQuery(table).each(function (index) {
if (!index) return;
var tableCell = jQuery(this).find("td").eq(columnIndex);
var id = tableCell.text().toLowerCase().trim();
var not_found = (id.indexOf(value) == -1);
$(this).closest('tr').toggle(!not_found);
});
}
然后你可以打电话searchInTableColumn(table, 0)
,它只会在第一列中查找。
推荐阅读
- dialogflow-es - 我需要使用 PHP y Dialogflow 存储会话变量
- flutter - 如何使用 GroupedListView/ListView.builder 对卡片中的 listTiles 进行分组?
- reactjs - 如何在最初下载和执行 React 项目时创建加载?
- android - 如何使用图像流(颤振)创建条形码扫描仪
- networking - 如何跟踪现有的 ansible 项目
- apache-spark - 如何使用类似于 Storm 的火花流创建多级管道?
- java - AS400/RPG 中的舍入与 Java 中的舍入
- python - Python 3.6.8 - Jedi - ImportError:无法导入名称'traverse_parents'
- scala - 计算火花数据帧中 24 小时时间范围内的总和
- kotlin - PublishSubject `subscribeOn` 行为