首页 > web前端 > js教程 > 正文

使用JavaScript实现一个简单的自动完成组件_javascript UI组件

幻影之瞳
发布: 2025-11-06 06:15:22
原创
626人浏览过
自动完成组件通过监听输入事件过滤数据并显示匹配建议。首先创建输入框和隐藏的下拉列表,使用CSS定位与样式控制外观;JavaScript定义数据源,实时匹配用户输入并动态渲染建议项,支持点击选中和外部点击关闭。可扩展异步加载、键盘导航、高亮匹配及防抖优化。

使用javascript实现一个简单的自动完成组件_javascript ui组件

自动完成组件(Autocomplete)是一种常见的UI功能,用户在输入时会看到匹配的建议列表。下面是一个使用原生JavaScript实现的简单自动完成组件,不依赖任何框架或库。

基本结构与HTML

先定义一个输入框和一个用于显示建议的下拉列表容器:

<div class="autocomplete">
  <input type="text" id="searchInput" placeholder="输入内容...">
  <ul id="suggestions" class="suggestions-list"></ul>
</div>
登录后复制

样式设计(CSS)

为了让组件看起来更清晰,添加一些基础样式:

.autocomplete {
  position: relative;
  width: 300px;
}

#searchInput {
  width: 100%;
  padding: 10px;
  font-size: 16px;
  border: 1px solid #ccc;
  border-radius: 4px;
}

.suggestions-list {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  border: 1px solid #ddd;
  border-top: none;
  max-height: 200px;
  overflow-y: auto;
  background: white;
  z-index: 10;
  display: none;
}

.suggestions-list.visible {
  display: block;
}

.suggestions-list li {
  padding: 10px;
  cursor: pointer;
}

.suggestions-list li:hover {
  background-color: #f0f0f0;
}
登录后复制

JavaScript逻辑实现

接下来是核心部分:监听输入事件,过滤数据并显示建议。

一键职达
一键职达

AI全自动批量代投简历软件,自动浏览招聘网站从海量职位中用AI匹配职位并完成投递的全自动操作,真正实现'一键职达'的便捷体验。

一键职达 79
查看详情 一键职达

立即学习Java免费学习笔记(深入)”;

// 建议数据源
const data = [
  "JavaScript",
  "Java",
  "Python",
  "PHP",
  "Perl",
  "C++",
  "C#",
  "Go",
  "Ruby",
  "Swift",
  "Kotlin"
];

const input = document.getElementById("searchInput");
const suggestionsList = document.getElementById("suggestions");

// 渲染建议项
function renderSuggestions(matches) {
  suggestionsList.innerHTML = '';
  if (matches.length === 0) {
    suggestionsList.classList.remove('visible');
    return;
  }

  matches.forEach(item => {
    const li = document.createElement("li");
    li.textContent = item;
    li.addEventListener("click", () => {
      input.value = item;
      suggestionsList.classList.remove('visible');
    });
    suggestionsList.appendChild(li);
  });

  suggestionsList.classList.add('visible');
}

// 获取匹配项
function getMatches(inputValue) {
  return data.filter(item =>
    item.toLowerCase().includes(inputValue.toLowerCase())
  );
}

// 输入事件处理
input.addEventListener("input", function () {
  const value = this.value.trim();
  if (value === "") {
    suggestionsList.classList.remove('visible');
    return;
  }
  const matches = getMatches(value);
  renderSuggestions(matches);
});

// 点击外部关闭建议列表
document.addEventListener("click", function (e) {
  if (e.target !== input && e.target !== suggestionsList) {
    suggestionsList.classList.remove('visible');
  }
});
登录后复制

功能扩展建议

这个基础版本可以进一步增强:

  • 异步支持:将data替换为fetch请求,从后端获取建议数据
  • 键盘导航:支持上下键选择,回车确认
  • 高亮匹配文字:在建议中加粗显示用户输入的部分
  • 防抖机制:避免频繁触发搜索,提升性能
基本上就这些,不复杂但容易忽略细节。

以上就是使用JavaScript实现一个简单的自动完成组件_javascript UI组件的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号