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

自动完成组件(Autocomplete)是一种常见的UI功能,用户在输入时会看到匹配的建议列表。下面是一个使用原生J*aScript实现的简单自动完成组件,不依赖任何框架或库。
基本结构与HTML
先定义一个输入框和一个用于显示建议的下拉列表容器:
<div class="autocomplete"> <input type="text" id="searchInput" placeholder="输入内容..."> <ul id="suggestions" class="suggestions-list"></ul> </div>
样式设计(CSS)
为了让组件看起来更清晰,添加一些基础样式:
J*ashop
J*ashop是基于 J*a技术构建的开源网店系统,其特色是组件机制和模板引擎让扩展变得简单,可有第三方组件可供选择,降低二次开发成本。同时 J*ashop推出 “ 第三方开发者合作共赢计划 ”,依托计时软件有效计算开发费用,期望在实现双赢的基础上走出我们国人自己开源模式 ,详见 :J*ashop第三方开发者合作共赢计划J*ashop v3.0 升级日志:一、机制1. 完善组件机制,更易
0
查看详情
.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网页版内容访问全集


2025-11-06
浏览次数:次
返回列表
) {
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');
}
});