新闻中心

使用J*aScript实现一个简单的自动完成组件_j*ascript UI组件

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

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

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

基本结构与HTML

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

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

样式设计(CSS)

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

Javashop J*ashop

J*ashop是基于 J*a技术构建的开源网店系统,其特色是组件机制和模板引擎让扩展变得简单,可有第三方组件可供选择,降低二次开发成本。同时 J*ashop推出 “ 第三方开发者合作共赢计划 ”,依托计时软件有效计算开发费用,期望在实现双赢的基础上走出我们国人自己开源模式 ,详见 :J*ashop第三方开发者合作共赢计划J*ashop v3.0 升级日志:一、机制1. 完善组件机制,更易

Javashop 0 查看详情 Javashop
.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;
}

J*aScript逻辑实现

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

// 建议数据源
const data = [
  "J*aScript",
  "J*a",
  "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请求,从后端获取建议数据
  • 键盘导航:支持上下键选择,回车确认
  • 高亮匹配文字:在建议中加粗显示用户输入的部分
  • 防抖机制:避免频繁触发搜索,提升性能
基本上就这些,不复杂但容易忽略细节。

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


# css  # seo网站提交数据  # 山东seo推广网站  # 清远财税seo优化排名  # 简阳市网络推广营销  # 亳州seo招聘  # 输入框  # 如何实现  # 服务端  # 开源  # 管理器  # 有何  # 有什么  # c  # 自动完成  # php  # javascript  # python  # java  # html  # go  # app  # ssl  # 后端  # c++  # 第三方  # 英文网站 优化方案  # 网站小程序建设培训心得  # seo和艺术密码哪个好  # 南湖公司内网站建设  # 网站基础SEO优化教学 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: composer 和 npm/yarn 在管理依赖方面有什么核心思想差异?  C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法  Pyrogram与g4f集成:异步编程实践与常见错误解决  Tabulator表格日期时间排序问题及自定义解决方案  b站怎么看视频的弹幕数量_b站弹幕数量查看方法  小米Civi 4录制视频过暗_小米Civi 4亮度优化  快手赚钱渠道_快手收益来源  解决移动端滚动问题的overflow属性应用指南  ArrayList与LinkedList核心操作的Big-O复杂度分析  AngularJS $http POST请求数据传递与Go后端接收实践  J*aScript DOM操作:高效清空列表元素的策略与实践  126邮箱网页版官方入口 126邮箱账号在线登录平台  AO3最新入口2025公告_AO3中文官网合集  在Go开发中优雅管理ListenAndServe进程:GoSublime集成方案  火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧  QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录  Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】  初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解  红果短剧网页版官网入口 官方最新网址发布  深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  黑猫投诉统一入口官网 消费者权益保护投诉平台  J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析  苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】  Spyder启动失败:字体文件权限拒绝错误解决方案  PHP中高效并行检查多链接状态的教程  Python:递归比较文件夹内容并找出特定类型文件的差异  Angular Material 垂直步进器:实现底部到顶部排序的教程  怎么在mac上运行html代码_mac运行html代码方法【指南】  必由学官方平台入口 必由学在线课堂登录地址  “音游” × “怪文书” 题材的节奏冒险游戏 《晕晕电波症候群》确定于2026年4月发售!  Golang如何通过reflect操作map_Golang reflect map操作与遍历技巧  TikTok网页版直接登录 TikTok网页端官方平台入口  铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧  手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析  手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议  sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE  html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】  J*aScript对象创建方式_J*aScript设计模式应用  解决Flask中Quill编辑器内容提交失败及TypeError的指南  向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程  Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议  地铁跑酷免费秒玩入口链接 地铁跑酷小游戏免费秒玩网站  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  uc浏览器网页版入口 uc浏览器网页版最新网址  qq游戏手机版下载安装_qq游戏移动端入口  Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  AO3镜像入口大全 AO3网页版内容访问全集 

搜索