JavaScript输入框点击下拉提示(通常称为自动完成或自动填充)是一种用户界面功能,它允许用户在输入时从预定义的列表中选择一个选项。这种功能通常用于提高用户体验,减少输入错误,并加快数据输入速度。
以下是一个简单的基于静态数据的自动完成示例:
<!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="search()" placeholder="Search..">
<div id="autocomplete-container"></div>
<script>
const data = ["Apple", "Banana", "Cherry", "Date", "Elderberry", "Fig", "Grape"];
function search() {
const input = document.getElementById('myInput');
const filter = input.value.toUpperCase();
const container = document.getElementById('autocomplete-container');
container.innerHTML = '';
if (filter.length > 0) {
const a = document.createElement('div');
a.setAttribute('id', 'autocomplete-list');
a.setAttribute('class', 'autocomplete-items');
data.forEach(item => {
if (item.toUpperCase().indexOf(filter) > -1) {
const b = document.createElement('div');
b.innerHTML = `<strong>${item.substr(0, filter.length)}</strong>`;
b.innerHTML += item.substr(filter.length);
b.innerHTML += `<input type='hidden' value='${item}'>`;
b.addEventListener('click', function(e) {
input.value = this.getElementsByTagName('input')[0].value;
container.innerHTML = '';
});
a.appendChild(b);
}
});
container.appendChild(a);
}
}
</script>
</body>
</html>
问题:自动完成功能在某些情况下不显示或显示不正确。
原因:
解决方法:
通过以上步骤,通常可以解决大多数自动完成功能的问题。
领取专属 10元无门槛券
手把手带您无忧上云