如何编写最简洁的前端自动完成(Autocomplete)功能示例代码?
时间: 2024-10-20 22:19:05 浏览: 27
前端实现自动完成功能通常涉及到HTML、CSS以及JavaScript。下面是一个简单的基于JavaScript的模板,使用了HTML的`<input>`元素和`<ul>`列表。这个例子假设我们有一个数组`options`存储备选的关键词。
```html
<!DOCTYPE html>
<html lang="zh">
<head>
<style>
.autocomplete {
position: relative;
display: inline-block;
}
.autocomplete-items {
position: absolute;
z-index: 99;
max-height: 150px;
overflow-y: auto;
border: 1px solid #ccc;
background-color: #f9f9f9;
list-style-type: none;
margin: 0;
padding: 0;
width: 100%;
}
.autocomplete-item {
cursor: pointer;
padding: 12px 16px;
transition: 0.3s;
}
.autocomplete-item:hover {
background-color: #ddd;
}
</style>
</head>
<body>
<div class="autocomplete" id="myAutocomplete">
<input type="text" onkeyup="searchAutocomplete()" placeholder="输入关键字...">
<ul class="autocomplete-items" id="autocompleteItems"></ul>
</div>
<script>
const options = ["Apple", "Banana", "Cherry", "Date", "Elderberry"]; // 假设的选项
function searchAutocomplete() {
let input = document.getElementById('myAutocomplete').getElementsByTagName('input')[0];
let filter = input.value.toUpperCase();
let autocompleteItems = document.getElementById('autocompleteItems');
// 清空已有的列表项
autocompleteItems.innerHTML = '';
if (filter === '') {
// 如果输入为空,则显示所有选项
showAllOptions(options);
} else {
// 根据输入过滤并显示匹配的选项
showFilteredOptions(filter);
}
}
function showAllOptions(arr) {
for (let i = 0; i < arr.length; i++) {
let li = document.createElement('li');
li.textContent = arr[i];
autocompleteItems.appendChild(li);
}
}
function showFilteredOptions(filter) {
let matches = [];
for (let i = 0; i < options.length; i++) {
if (options[i].toUpperCase().indexOf(filter) > -1) {
matches.push(options[i]);
}
}
showAllOptions(matches);
}
</script>
</body>
</html>
```
在这个例子中,当你在输入框中输入字符时,会触发`searchAutocomplete`函数,它会根据输入值实时筛选并显示相关的选项。当你选择一个列表项时,实际应用中需要添加相应的事件监听器来处理选择。
阅读全文