首页 web前端 js教程 自动完成的搜索框javascript实现_javascript技巧

自动完成的搜索框javascript实现_javascript技巧

May 16, 2016 pm 03:13 PM
js 搜索框

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

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

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

1

2

3

4

<div class="search">

    <input type="text" value="">

    <button>搜索</button>

</div>

登录后复制

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

.search {

  display: inline-flex;

  height: 35px;

  margin: 50px auto;

  position: relative;

}

.search input {

  border: #eee 1px solid;

  background-color: #fff;

  outline: none;

  width: 200px;

  padding: 0 5px;

}

.search button {

  background-color: #ff3300;

  color: #fff;

  border: none;

  width: 80px;

}

登录后复制

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

1

2

3

4

5

6

<ul>

  <li><a href="#">武林外传</a> </li>

  <li><a href="#">葵花宝典</a> </li>

  <li><a href="#">如来佛掌</a> </li>

  <li><a href="#">九阴白骨爪</a> </li>

</ul>

登录后复制

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

1

2

3

4

5

6

7

8

9

10

11

12

.search ul {

  position: absolute;

  left: 0;

  top: 35px;

  border: #eee 1px solid;

  min-width: calc(100% - 80px);

  text-align: left;

}

.search ul a {

  display: block;

  padding: 5px;

}

登录后复制

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

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

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

1

2

3

4

var ele_key = document.getElementById("key");

ele_key.onkeyup = function (e) {

  //处理事件

}

登录后复制

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

1

var data = ["编程的人", "武林外传", "葵花宝典", "九阴白骨爪", "武林江湖", "will"];

登录后复制

后台数据有了, 事件也添加了. 这时候我们对数据进行处理了.
首先是获取用输入的数据, 来然后与后台数据进行比较. 然后将比较后的数据保存在一个数据里面.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

//定义一些数据

var data = ["编程的人", "武林外传", "葵花宝典", "九阴白骨爪", "武林江湖", "will"];

var ele_key = document.getElementById("key");

ele_key.onkeyup = function (e) {

 

  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]);

    }

  }

 

 }

登录后复制

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

//定义一些数据

var data = ["编程的人", "武林外传", "葵花宝典", "九阴白骨爪", "武林江湖", "will"];

var ele_key = document.getElementById("key");

ele_key.onkeyup = function (e) {

 

  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实现搜索框的自动完成效果,大家可以自己测试玩玩!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用JS和百度地图实现地图平移功能 如何使用JS和百度地图实现地图平移功能 Nov 21, 2023 am 10:00 AM

如何使用JS和百度地图实现地图平移功能百度地图是一款广泛使用的地图服务平台,在Web开发中经常用于展示地理信息、定位等功能。本文将介绍如何使用JS和百度地图API实现地图平移功能,并提供具体的代码示例。一、准备工作使用百度地图API前,首先需要在百度地图开放平台(http://lbsyun.baidu.com/)上申请一个开发者账号,并创建一个应用。创建完成

推荐:优秀JS开源人脸检测识别项目 推荐:优秀JS开源人脸检测识别项目 Apr 03, 2024 am 11:55 AM

人脸检测识别技术已经是一个比较成熟且应用广泛的技术。而目前最为广泛的互联网应用语言非JS莫属,在Web前端实现人脸检测识别相比后端的人脸识别有优势也有弱势。优势包括减少网络交互、实时识别,大大缩短了用户等待时间,提高了用户体验;弱势是:受到模型大小限制,其中准确率也有限。如何在web端使用js实现人脸检测呢?为了实现Web端人脸识别,需要熟悉相关的编程语言和技术,如JavaScript、HTML、CSS、WebRTC等。同时还需要掌握相关的计算机视觉和人工智能技术。值得注意的是,由于Web端的计

如何使用PHP和JS创建股票蜡烛图 如何使用PHP和JS创建股票蜡烛图 Dec 17, 2023 am 08:08 AM

如何使用PHP和JS创建股票蜡烛图股票蜡烛图是股票市场中常见的一种技术分析图形,通过绘制股票的开盘价、收盘价、最高价和最低价等数据,帮助投资者更直观地了解股票的价格波动情况。本文将教你如何使用PHP和JS创建股票蜡烛图,并附上具体的代码示例。一、准备工作在开始之前,我们需要准备以下环境:1.一台运行PHP的服务器2.一个支持HTML5和Canvas的浏览器3

股票分析必备工具:学习PHP和JS绘制蜡烛图的步骤 股票分析必备工具:学习PHP和JS绘制蜡烛图的步骤 Dec 17, 2023 pm 06:55 PM

股票分析必备工具:学习PHP和JS绘制蜡烛图的步骤,需要具体代码示例随着互联网和科技的快速发展,股票交易已经成为许多投资者的重要途径之一。而股票分析是投资者决策的重要一环,其中蜡烛图被广泛应用于技术分析中。学习如何使用PHP和JS绘制蜡烛图将为投资者提供更多直观的信息,帮助他们更好地做出决策。蜡烛图是一种以蜡烛形状来展示股票价格的技术图表。它展示了股票价格的

如何使用JS和百度地图实现地图点击事件处理功能 如何使用JS和百度地图实现地图点击事件处理功能 Nov 21, 2023 am 11:11 AM

如何使用JS和百度地图实现地图点击事件处理功能概述:在Web开发中,经常需要使用地图功能来展示地理位置和地理信息。而地图上的点击事件处理是地图功能中常用且重要的一部分。本文将介绍如何使用JS和百度地图API来实现地图的点击事件处理功能,并给出具体的代码示例。步骤:导入百度地图的API文件首先,要在HTML文件中导入百度地图API的文件,可以通过以下代码实现:

如何设置Windows 10搜索栏为透明 如何设置Windows 10搜索栏为透明 Jan 09, 2024 pm 09:46 PM

有些用户看到win10搜索框都是透明的,自己也想拥有,但是不知道怎么设置,现在有一个非常简单的方法,只要在win10商店下载软件即可,下面我们一起看看win10搜索框设置透明的方法吧。win10搜索框透明:1、右击任务栏选择搜索,将搜索框变成搜索图标。2、打开应用商店。3、搜索TranslucentTB软件。(可以选择下载汉化版)4、下载安装好之后。5、打开TranslucentTB,在右下方的任务栏中可以看到。6、将它设置成全透明即可。

解决win10搜索框变灰无法使用的方法 解决win10搜索框变灰无法使用的方法 Jan 03, 2024 am 11:07 AM

用户日常使用win10搜索框搜索内容和需要的软件时,发现了win10搜索框灰色不能用了的问题,一般在电脑策略组中将设置成禁用即可,下面一起看看win10搜索框灰色不能用解决方法。win10搜索框灰色不能用解决方法:1、按下win+R键,打开运行输入gpedit.msc。2、在本地组策略编辑器——选择管理模板——windows组件选项。3、找到搜索——允许使用Cortana这一选项。4、打开后在其页面选择已禁用,点击确定即可,重新启动电脑。

如何使用JS和百度地图实现地图热力图功能 如何使用JS和百度地图实现地图热力图功能 Nov 21, 2023 am 09:33 AM

如何使用JS和百度地图实现地图热力图功能简介:随着互联网和移动设备的迅速发展,地图成为了一种普遍的应用场景。而热力图作为一种可视化的展示方式,能够帮助我们更直观地了解数据的分布情况。本文将介绍如何使用JS和百度地图API来实现地图热力图的功能,并提供具体的代码示例。准备工作:在开始之前,你需要准备以下事项:一个百度开发者账号,并创建一个应用,获取到相应的AP

See all articles