【发布时间】:2017-07-12 10:26:51
【问题描述】:
我有一个这样的 HTML 列表项:
<ul id="fruits">
<li><a href="#">Mango</a></li>
<li><a href="#">Apple</a></li>
<li><a href="#">Grape</a></li>
<li><a href="#">Cherry</a></li>
</ul>
用户将看不到这些项目,因为我们用样式display: none; 隐藏了它们。
用户可以从input字段下方搜索这些项目:
<input type="text" id="searchInput" onkeyup="fruitSearch()" placeholder="Search fruits">
当用户开始在input 字段上搜索水果名称时,它将列出匹配的名称,就像谷歌搜索建议一样。
使用下面的 JavaScript 进行搜索:
function fruitSearch() {
// Declare variables
var input, filter, ul, li, a, i;
input = document.getElementById('searchInput');
filter = input.value.toUpperCase();
ul = document.getElementById("fruits");
li = ul.getElementsByTagName('li');
// Loop through all list items, and show those who match the search query
for (i = 0; i < li.length; i++) {
a = li[i].getElementsByTagName("a")[0];
if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = "block";
} else {
li[i].style.display = "none";
}
}
}
直到这里,一切都按设计和预期工作,一旦用户清除输入字段,所有水果列表项<li> 现在都可见而不是隐藏。
当用户清除input 字段时,如何重置列表项并将它们全部隐藏?
【问题讨论】:
-
先测试你输入的值,如果它为空则做一个特殊情况。在这种特殊情况下,将它们全部隐藏..
-
即使更改为 ,您的搜索也无法正常工作。
-
听起来您正在尝试实现数据列表已经可以在不编码的情况下实现的目标。 w3schools.com/tags/tag_datalist.asp 是否可取取决于我想您需要的浏览器支持。
-
@HemaNandagopal 它不起作用,因为他在他的
<li>标签中缺少<a>标签,我已经在我的回答中解释了这一点。 -
是的,看到了 :) 我发布它是因为 OP 说它按预期工作,所以。
标签: javascript jquery html