使用Jquery在TABLE中部分搜索单词
Partially search words in a TABLE with Jquery
我使用Javascript在HTML表列中进行搜索。但是,我只能通过键入表单元格内容的第一个字母来搜索值。
我的数据示例如下所示。
如果我在第2列中搜索值123,则会弹出所需的表格单元格。
例如,如果我搜索值456或23,则不会发生任何事情。
|column1|column2|
__________________
|000|123 456|
|001|123 456|
我当前的Javascript:
<script type="text/javascript">
$("#searchn").on("keyup", function() {
var value = $(this).val();
$("table tr").each(function(index) {
if (index !== 0) {
$row = $(this);
var id = $row.find("td").children().eq(1).text();
if (id.indexOf(value) !== 0) {
$row.hide();
}
else {
$row.show();
}
}
});
});
</script>
您的逻辑存在缺陷,因为如果找不到您要搜索的值,indexOf()
将返回-1
,如果找到,则返回匹配的从零开始的索引。因此,if
语句存在缺陷,因为它在值的开头排除了匹配项。
您应该将if
条件改为:
if (id.indexOf(value) !== -1) {
$row.hide();
}
else {
$row.show();
}
另外请注意,您可以使用filter()
和toggle()
来缩短此时间:
$("#searchn").on("keyup", function() {
var value = $(this).val();
$("table tr:not(:first)").show().filter(function(index) {
return $(this).find("td:eq(1)").text().indexOf(value) == -1;
}).hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<th>Col 1</th>
<th>Col 2</th>
</tr>
<tr>
<td>000</td>
<td>123 456</td>
</tr>
<tr>
<td>001</td>
<td>123 456</td>
</tr>
</table>
<input id="searchn" />
相关文章:
- 在正则表达式中搜索单词
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- 在自动刷新网页时搜索单词
- 选择下拉菜单:实现非精确搜索,每个单词都将被不可重复地搜索
- Javascript-在一个数组中搜索整个单词,并创建一个符合条件的新数组
- 如何在搜索框中获取从特定字母开头的单词
- JQuery在链接的静态页面中搜索,突出显示找到的单词,而不破坏列表
- 谷歌建议搜索多个单词
- Jquery搜索表可以'找不到带括号的单词
- 如何使用javascript通过CKEditor中的编码来搜索单词
- 在单词数组中搜索单词
- 使用正则表达式搜索单词
- 在javascript中搜索单词中的字母
- 使用jquery搜索单词
- 用于在Unicode字符串中搜索单词边界的Javascript正则表达式
- 在文本错误中搜索单词
- 使用Jquery在TABLE中部分搜索单词
- 如何使仅显示包含搜索单词的框 - jQuery
- 使用backboneJS集合以任意顺序搜索单词
- 使用JS以任意顺序搜索单词