JavaScript输入框点击下拉提示框通常指的是自动完成(Autocomplete)功能。这种功能在用户输入时,会根据已输入的内容动态显示可能的匹配项,从而提高用户的输入效率。
以下是一个简单的基于本地数据的自动完成示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Autocomplete Example</title>
<style>
.autocomplete-items {
position: absolute;
border: 1px solid #d4d4d4;
border-bottom: none;
border-top: none;
z-index: 99;
top: 100%;
left: 0;
right: 0;
}
.autocomplete-items div {
padding: 10px;
cursor: pointer;
background-color: #fff;
border-bottom: 1px solid #d4d4d4;
}
.autocomplete-items div:hover {
background-color: #e9e9e9;
}
</style>
</head>
<body>
<h2>Autocomplete Example</h2>
<input type="text" id="myInput" onkeyup="autocomplete()" placeholder="Start typing...">
<div id="autocomplete-list" class="autocomplete-items"></div>
<script>
const countries = ["Apple", "Banana", "Cherry", "Date", "Elderberry", "Fig", "Grape"];
function autocomplete() {
const input = document.getElementById("myInput");
const filter = input.value.toUpperCase();
const autocompleteList = document.getElementById("autocomplete-list");
autocompleteList.innerHTML = "";
let a = document.createElement("div");
a.setAttribute("id", "autocomplete-list");
a.setAttribute("class", "autocomplete-items");
if (filter.length > 0) {
for (let i = 0; i < countries.length; i++) {
if (countries[i].toUpperCase().indexOf(filter) > -1) {
let b = document.createElement("div");
b.innerHTML = "<strong>" + countries[i].substr(0, filter.length) + "</strong>";
b.innerHTML += countries[i].substr(filter.length);
b.innerHTML += "<input type='hidden' value='" + countries[i] + "'>";
b.addEventListener("click", function(e) {
input.value = this.getElementsByTagName("input")[0].value;
autocompleteList.innerHTML = "";
});
a.appendChild(b);
}
}
} else {
autocompleteList.innerHTML = "";
}
input.parentNode.appendChild(a);
}
</script>
</body>
</html>
原因:
解决方法:
z-index
足够高,且没有被其他元素遮挡。autocomplete
函数,并且正确生成了下拉框。原因:
解决方法:
keyup
)上监听,并且在每次输入变化时重新生成下拉框。通过以上方法,可以有效解决常见的自动完成功能问题,提升用户体验。
没有搜到相关的文章