📅  最后修改于: 2023-12-03 15:15:42.081000             🧑  作者: Mango
自动完成下拉列表是一种常见的Web应用程序技术,它可以在用户输入时显示可能的选项,同时减少用户的输入量。本文将介绍如何在HTML中创建自动完成下拉列表。
实现自动完成下拉列表的方法很多,但在此我们将介绍使用HTML和JavaScript的方法。
首先,我们需要创建一个输入框和下拉列表:
<input type="text" id="myInput" placeholder="输入内容">
<div id="myList"></div>
然后我们需要编写JavaScript代码,以便在文本框中输入内容时自动生成匹配项的下拉列表。我们可以使用onkeyup
事件监听输入框中的文本变化,并在变化时调用showList
函数:
document.getElementById("myInput").addEventListener("keyup", function(){
showList();
});
showList
函数首先获取输入框中的文本,然后从服务器或本地JSON文件中获取匹配项的列表。在此我们将假设我们已经获取到了一个名为jsonList
的包含匹配项的数组。然后我们将创建一个HTML列表元素,并为其添加匹配项:
function showList() {
var input, filter, ul, li, a, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
ul = document.getElementById("myList");
ul.innerHTML = "";
for (i = 0; i < jsonList.length; i++) {
if (jsonList[i].toUpperCase().indexOf(filter) > -1) {
li = document.createElement("li");
a = document.createElement("a");
a.innerHTML = jsonList[i];
li.appendChild(a);
ul.appendChild(li);
}
}
}
最后,我们需要使用CSS来样式化我们的下拉列表。具体实现方法可以根据应用程序的要求进行更改。
<!DOCTYPE html>
<html>
<head>
<style>
#myInput {
box-sizing: border-box;
background-image: url('searchicon.png');
background-position: 14px 12px;
background-repeat: no-repeat;
font-size: 16px;
padding: 14px 20px 12px 45px;
border: none;
border-bottom: 1px solid #ddd;
}
#myList {
list-style-type: none;
padding: 0;
margin: 0;
position: absolute;
z-index: 1;
}
#myList li a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
#myList li a:hover:not(.header) {
background-color: #ddd;
}
</style>
</head>
<body>
<h2>自动完成下拉列表</h2>
<input type="text" id="myInput" placeholder="输入内容">
<div id="myList"></div>
<script>
var jsonList = ["苹果", "香蕉", "樱桃", "葡萄", "芒果", "橙子", "草莓", "西瓜"];
document.getElementById("myInput").addEventListener("keyup", function(){
showList();
});
function showList() {
var input, filter, ul, li, a, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
ul = document.getElementById("myList");
ul.innerHTML = "";
for (i = 0; i < jsonList.length; i++) {
if (jsonList[i].toUpperCase().indexOf(filter) > -1) {
li = document.createElement("li");
a = document.createElement("a");
a.innerHTML = jsonList[i];
li.appendChild(a);
ul.appendChild(li);
}
}
}
</script>
</body>
</html>