新闻中心
怎样开发一个搜索框自动补全插件_J*aScript搜索自动补全插件实战教程
先搭建HTML结构并监听输入事件,通过过滤数据源匹配建议,渲染到下拉列表,支持点击填充和键盘上下键导航及回车确认,实现完整自动补全功能。

开发一个搜索框自动补全插件,核心是监听用户输入、匹配建议数据、动态展示结果并支持键盘操作。下面带你一步步实现一个轻量但功能完整的 J*aScript 搜索自动补全插件,不依赖任何框架。
1. 基本结构与HTML搭建
先定义搜索框和下拉建议列表的结构:
<div class="autocomplete"> <input type="text" id="searchInput" placeholder="搜索..."> <ul class="suggestions"></ul> </div>
这个容器包含输入框和用于显示建议的无序列表。样式可以后续添加,确保下拉层定位准确。
2. 核心逻辑:输入监听与建议匹配
使用 addEventListener 监听输入事件,实时过滤数据源:
创建一个函数来初始化插件,接收输入框元素和数据源(可以是数组):
function initAutocomplete(inputElement, dataSource) {
const suggestionsList = document.querySelector('.suggestions');
<p>inputElement.addEventListener('input', function (e) {
const value = e.target.value.trim().toLowerCase();
if (!value) {
suggestionsList.innerHTML = '';
return;
}</p><pre class='brush:php;toolbar:false;'>// 过滤匹配项
const matches = dataSource.filter(item =>
item.toLowerCase().includes(value)
);
// 渲染建议
renderSuggestions(matches);}); }
这里通过 filter 方法找出包含输入关键词的数据项,然后调用渲染函数。
3. 渲染建议项并绑定点击选择
将匹配结果插入到下拉列表中,并让每一项可点击填充到输入框:
Kreado AI
Kreado AI是一个多语言AI视频创作平台,只需输入文本或关键词,即可创作真实/虚拟人物的多语言口播视频。 为创作者提供AI赋能
182
查看详情
function renderSuggestions(matches) {
const suggestionsList = document.querySelector('.suggestions');
suggestionsList.innerHTML = '';
<p>matches.forEach(match => {
const li = document.createElement('li');
li.textContent = match;
li.addEventListener('click', function () {
document.getElementById('searchInput').value = match;
suggestionsList.innerHTML = '';
});
suggestionsList.appendChild(li);
});
}</p>点击某一项时,将其文本填入输入框,并清空建议列表。
4. 支持键盘上下选择与回车确认
增强用户体验,允许用方向键在建议中导航:
在插件中维护一个高亮索引,监听键盘事件:
let highlightIndex = -1;
<p>inputElement.addEventListener('keydown', fu
nction (e) {
const items = suggestionsList.querySelectorAll('li');
if (!items.length) return;</p><p>if (e.key === 'ArrowDown') {
e.preventDefault();
highlightIndex = (highlightIndex + 1) % items.length;
highlight(items);
} else if (e.key === 'ArrowUp') {
e.preventDefault();
highlightIndex = (highlightIndex - 1 + items.length) % items.length;
highlight(items);
} else if (e.key === 'Enter') {
e.preventDefault();
if (highlightIndex >= 0) {
inputElement.value = items[highlightIndex].textContent;
suggestionsList.innerHTML = '';
highlightIndex = -1;
}
}
});</p><p>function highlight(items) {
items.forEach((item, index) => {
item.classList.toggle('highlighted', index === highlightIndex);
});
}</p>为 .highlighted 添加CSS样式(如背景变蓝),让用户清楚当前选中项。
基本上就这些。你现在已经拥有一个具备输入过滤、点击选择、键盘导航的完整自动补全功能。可根据需要扩展远程数据加载、防抖、模糊匹配等特性。不复杂但容易忽略细节,比如清空建议、事件解绑等。
以上就是怎样开发一个搜索框自动补全插件_J*aScript搜索自动补全插件实战教程的详细内容,更多请关注其它相关文章!
# 多语言
# 湖州优化网站建设推广
# 怎么做seo 霸屏
# 新世相营销推广
# 宜昌高效网站推广怎么做
# 报纸推广广告宣传营销方案
# 分销网站如何推广赚钱呢
# 大同百度关键词排名
# 枫林SEO工具箱推荐
# 脂肪移植营销推广方案
# 农产品营销推广费用占比
# 只需
# 是一个
# 未接
# 掩码
# js插件开发教程
# 清空
# 有什么区别
# 如何使用
# 输入框
# 关键词
# 键盘事件
# css样式
# ssl
# app
# html
# java
# javascript
# css
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
在Typer应用中优雅地处理和重组任意命令行参数
EMS快递官网app_中国邮政速递物流手机客户端
使用Python高效删除Word宏并转换DOCM为DOCX格式
优化HTML表单样式:解决输入框焦点跳动与元素间距问题
C++如何实现单例模式_C++设计模式之线程安全的单例写法
12306怎么选座位选到安静区_12306选座安静区域选择策略
Win11怎么开启高性能模式_Windows 11电源计划优化设置
J*aScript设计模式实践_j*ascript代码优化
一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法
Lar*el递归关系中排除子孙节点的策略
Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】
html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】
在WordPress中通过REST API获取BasicAuth保护的远程文章
学习通网页版官方登录 超星学习通电脑端入口指南
MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId
手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议
Composer如何在生产环境安全地执行composer update
Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达
UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】
Golang指针如何与map组合使用_Golang map指针组合实践
Lar*el Excel导入时生成自定义递增ID的策略与实践
快手官方唯一登录入口 谨防山寨钓鱼网站
Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】
CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示
蛙漫移动版在线看 蛙漫手机浏览器直达入口
b站怎么看视频的弹幕数量_b站弹幕数量查看方法
PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程
CSS Box Model与弹性按钮:维持布局稳定的动画实践
J*aScript生成器_j*ascript异步迭代
修复二维数组索引越界异常:一维循环到二维坐标的正确映射
Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025
葱吃多了会怎样 葱吃多了会伤胃吗
怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】
Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】
从J*aScript对象中精确提取指定属性的教程
J*a应用集成GitHub CLI与API认证指南
响应式图片在网页设计中的正确实现方法
解决Tabulator日期时间排序问题的专业指南
Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】
蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗
TikTok网页版直接登录 TikTok网页端官方平台入口
漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接
NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰
uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验
4399免费游戏网址入口 4399小游戏免费入口点开即玩
解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常
如何在Promise链中优雅地中断后续then执行
PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符
机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认


2025-11-19
浏览次数:次
返回列表
nction (e) {
const items = suggestionsList.querySelectorAll('li');
if (!items.length) return;</p><p>if (e.key === 'ArrowDown') {
e.preventDefault();
highlightIndex = (highlightIndex + 1) % items.length;
highlight(items);
} else if (e.key === 'ArrowUp') {
e.preventDefault();
highlightIndex = (highlightIndex - 1 + items.length) % items.length;
highlight(items);
} else if (e.key === 'Enter') {
e.preventDefault();
if (highlightIndex >= 0) {
inputElement.value = items[highlightIndex].textContent;
suggestionsList.innerHTML = '';
highlightIndex = -1;
}
}
});</p><p>function highlight(items) {
items.forEach((item, index) => {
item.classList.toggle('highlighted', index === highlightIndex);
});
}</p>