使用js写一个搜索时自动补全的工具

创建一个搜索自动补全工具通常涉及监听输入框事件,向服务器发送请求以获取匹配项,并更新UI以显示这些匹配项。以下是一个简单的示例,使用原生JavaScript来演示这个过程:

  1. HTML:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Search Autocomplete</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <input type="text" id="searchInput" placeholder="Search...">
    <div id="autocompleteResults"></div>
    <script src="script.js"></script>
</body>
</html>
  1. CSS (styles.css):
#autocompleteResults {
    border: 1px solid #ccc;
    max-height: 200px;
    overflow-y: auto;
}

.resultItem {
    padding: 5px;
    cursor: pointer;
}

.resultItem:hover {
    background-color: #f0f0f0;
}
  1. JavaScript (script.js):
document.addEventListener('DOMContentLoaded', function() {
    const searchInput = document.getElementById('searchInput');
    const autocompleteResults = document.getElementById('autocompleteResults');
    const mockData = ['Apple', 'Banana', 'Cherry', 'Dragonfruit', 'Elderberry', 'Fig', 'Grape'];

    searchInput.addEventListener('input', function(event) {
        const query = event.target.value.toLowerCase();
        const results = mockData.filter(item => item.toLowerCase().startsWith(query));
        displayResults(results);
    });

    function displayResults(results) {
        autocompleteResults.innerHTML = ''; // Clear previous results
        if (results.length > 0) {
            results.forEach(result => {
                const resultItem = document.createElement('div');
                resultItem.classList.add('resultItem');
                resultItem.textContent = result;
                resultItem.addEventListener('click', function() {
                    searchInput.value = result;
                    autocompleteResults.innerHTML = ''; // Clear results when an item is selected
                });
                autocompleteResults.appendChild(resultItem);
            });
        }
    }
});

这个示例使用了一个简单的模拟数据集(mockData)来演示自动补全功能。在实际应用中,您可能需要根据用户输入向服务器发送异步请求(例如,使用fetch API)以获取匹配项。此外,您还可以根据需要调整样式和功能。

posted @   王铁柱6  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示