自动完成的搜索框javascript实现

2019-01-04

编程之家

https://www.jb51.cc

编程之家收集整理的这篇文章主要介绍了自动完成的搜索框javascript实现,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在很多需要搜索的网站,都会有一个自动完成的搜索框. 方便用户查找他们想要的搜索词. 帮助用户快速找到自己想要的结果. 这种方式是比较友好的. 所以是比较提倡使用的.

我们这次就来实现这一效果. 我们通过两篇文章来进行讲解. 首先我们来完成界面的设计布局.

界面的HTML结构,第一个少不了的是一个搜索框,第二个就是搜索的点击按钮.

这就是最简单的搜索框的设计. 那CSS代码怎么处理. 以前用得多的是使用float来进行处理,然后给搜索框一个边框,设置一个padding. 然后给按钮去除边框,设置一个背景. 这里我们使用flex布局方式. 这样更简便点. 不用考虑清除浮动效果.当然这里就要考虑兼容性问题了.

这时候我们继续往下考虑,如果用户输入了关键词,那就得显示一个列表的相关词语. 那这时候我们需要加入一个词语列表.

比如

我们将这行代码追加到.search的内容后面.然后设置CSS代码,我们设置他的最小宽度为.search宽度减去搜索按钮的宽度.这样就跟搜索框一样宽.

这得在CSS代码之前,将默认的一些浏览器样式清除.最后效果如下.

好了.下面我们完成JS的代码控制.

我们来分析下,其中的事件. 用户在输入框输入文字后,将输入的文字与后台数据做查询,查询到后返回给客户端,然后将返回的数据显示在数据列表下.

根据这个步骤,我们首先是获取输入框标签,给这个标签添加onkeyup事件

这里我们模拟一个后台数据,这里用数据来表示,然后加入一些数据

后台数据有了,事件也添加了. 这时候我们对数据进行处理了.

首先是获取用输入的数据,来然后与后台数据进行比较. 然后将比较后的数据保存在一个数据里面.

var val = this.value;

//获取输入框里匹配的数据

var srdata = [];

for (var i = 0; i < data.length; i++) {

console.log(data[i].indexOf(val))

if (val.trim().length > 0 && data[i].indexOf(val) > -1) {

srdata.push(data[i]);

}

}

}

继续往下分析,目前我们获取到后台查询到的数据后,那就得将这个数据显示给用户查看,这里我们显示在数据列表中.

var val = this.value;

//获取输入框里匹配的数据

var srdata = [];

for (var i = 0; i < data.length; i++) {

console.log(data[i].indexOf(val))

if (val.trim().length > 0 && data[i].indexOf(val) > -1) {

srdata.push(data[i]);

}

}

//获取到的数据准备追加显示,前期要做的事情: 清空数据,然后显示数据列表,如果获取到的数据为空,则不显示

var ele_datalist = document.getElementById("datalist");

ele_datalist.style.visibility = "visible";

ele_datalist.innerHTML = "";

if (srdata.length == 0) {

ele_datalist.style.visibility = "hidden";

}

//将搜索到的数据追加到显示数据列表,然后每一行加入点击事件,点击后将数据放入搜索框内,数据列表隐藏

var self = this;

for (var i = 0; i < srdata.length; i++) {

var ele_li = document.createElement("li");

var ele_a = document.createElement("a");

ele_a.setAttribute("href","javascript:;");

ele_a.textContent = srdata[i];

ele_a.onclick = function () {

self.value = this.textContent;

ele_datalist.style.visibility = "hidden";

}

ele_li.appendChild(ele_a);

ele_datalist.appendChild(ele_li);

}

}

在添加数据到列表中时,我们首先对数据列表做初始化处理,避免重复数据的添加. 其次就是我们给数据列表的每一行添加了一个点击事件,数据列表隐藏.

在这里整个自动完成的搜索框就完成了.我们来测试下效果.

这里可能是录制软件问题,边框与它录制的背景颜色应该一样了. 边框不见了(⊙﹏⊙)b

以上就是JAVASCRIPT实现搜索框的自动完成效果,大家可以自己测试玩玩!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

html 搜索框 自动补全,自动完成的搜索框javascript实现相关推荐

  1. Elasticsearch 分布式搜索引擎 -- 自动补全(拼音分词器、自定义分词器、自动补全查询、实现搜索框自动补全)

    文章目录 1. 自动补全 1.1 拼音分词器 1.2.1 自定义分词器 1.2.2 小结 1.2 自动补全 1.3 实现酒店搜索框自动补全 1.3.1 修改酒店映射结构 1.3.2 修改HotelDo ...

  2. pycharm 代码无法自动补全(自动顺带)的解决方法

    pycharm 代码无法自动补全(自动顺带)的解决方法 参考文章: (1)pycharm 代码无法自动补全(自动顺带)的解决方法 (2)https://www.cnblogs.com/xioawu-b ...

  3. PyTorch IDE hint incomplete PyCharm /VSCode 自动补全/自动提示,提示不完全的问题

    PyTorch在Pycharm等IDE中提示不完全等问题,想必搞深度学习/AI的人甚为之头疼.而且你查资料,各种风骚操作,但最后,基本上,一个个都是: 不能用!!! 连谷歌也搜不到管用的东西. 楼主也 ...

  4. SAP Cloud Platform 上的 WebIDE里,如何设置激活代码自动补全(自动完成)功能的快捷键

    Created by Wang, Jerry on Jan 18, 2015 complete url: https://sapui5.hana.ondemand.com/sdk/#docs/api/ ...

  5. qlineedit文本改变时_行文本编辑框QLineEdit及自动补全

    导读 行文本输入框在用于界面的文本输入,在WEB登录表单中应用广泛.一般行文本编辑框可定制性较高,既可以当作密码输入框,又可以作为文本过滤器.QLineEdit本身使用方法也很简单,无需过多的设置就能 ...

  6. 客户管理系统(SSM版):bs_typeahead动态的自动补全文本框的内容

    客户需求: 用户在创建交易页面,在客户名称文本框输入信息时,可以根据输入的关键字,模糊查找数据库中的客户名称,并把模糊查找的所有的客户名称以类似于下拉框的形式显示在客户名称文本框下方,用户可以从中选择 ...

  7. Elasticsearch实战-实现Hotel索引库的自动补全、拼音搜索功能

    一.实现思路 1.修改hotel索引库结构,设置自定义拼音分词器 2.修改索引库的name.all字段,使用自定义分词器 3.索引库添加一个新字段suggestion,类型为completion类型, ...

  8. Mac idea 代码自动补全快捷键 introduce local variable(引入局部变量)

    Mac idea 变量的自动补全 自动补全前代码: MyBatisUtils.getSqlSession(); 自动补全后代码: SqlSession session = MyBatisUtils.g ...

  9. IDEA快捷键设置,选择Eclipse风格的快捷键,自动补全快捷键,关闭当前窗口快捷键Ctrl+W,自动导入设置,引入外部的jar的方式,设置项目字体,设置项目字符集,Maven的方式获取jar

    1.设置成Eclipse的快捷键 选择默认快捷键类型 设置成了Eclipse风格的快捷键之后,但是还是有一些快捷键是有冲突的. 2.修改自动补全的快捷键 在搜索框中输入Completion,找到Mai ...

最新文章

  1. 用python写生日祝福的教程_祝豌豆生日快乐 - Python猫的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. 第一周(1.8-1.14)
  3. javascript时间格式format函数,js日期格式化函数
  4. Java教程 实战学习Struts实例
  5. 从IT人士到IT经理倪应该学会的30 项技能
  6. 无符号定点数加法运算的VHDL描述
  7. cocoapods 命令
  8. 瑞幸咖啡自曝虚假交易 22 亿,App 反冲 TOP 1
  9. uat测试用例和sit测试用例_软件测试用例设计时的颗粒度
  10. flume消费kafka数据太慢_kafka补充01
  11. 【图算法】(3) 网络的基本静态几何特征(二),附networkx完整代码
  12. LibreELEC 10.0.2发布
  13. 2019第八届中国财经峰会在京闭幕
  14. 解决unable to find valid certification path to requested target
  15. 截止频率的估算-例题
  16. Python的并发并行[1] - 线程[3] - 多线程的同步控制
  17. 弹性地基梁板法计算原理_平面弹性地基梁法,详细讲解!
  18. 版面设计编辑软件Swift Publisher 5 Mac
  19. RabbitMQ(消息队列)私人学习笔记
  20. Java使用Spire.Doc将多个word里的内容合并到一个word里边,格式保留

热门文章

  1. VirtualBox 安装 Linux时 报错This kernel requires an X86-64 CPU,but only detected an i686 CPU错误的解决办法
  2. SRS性能、内存优化工具用法
  3. Linux 下安装和配置git
  4. 大剑无锋之了解什么是CAP吗?【面试推荐】
  5. Hive的安装【完整版】
  6. linux命令行输入下一行但不运行命令
  7. 四面阿里,看看你都会吗
  8. C# Console.ReadLine()方法的使用 以及利用其返回值null终止输入
  9. 牛客网_PAT乙级_1020完美数列(25)【vector sort 最后一个测试用例超时】
  10. 一文解开java中字符串编码的小秘密