JavaScript实现搜索框的自动完成功能(一)

以下是详细的讲解:

JavaScript实现搜索框的自动完成功能(一) - 完整攻略

1. 自动完成功能的介绍

自动完成功能是指用户在输入搜索关键字时,搜索框会自动显示出与该关键字相关的搜索建议或关键字列表。这种功能通常使用 AJAX 技术来实现,通过 JavaScript 发送异步请求,获取服务器返回的搜索建议或关键字列表,并将其显示在下拉框中。

2. 实现过程

2.1 HTML 结构

首先,在 HTML 页面中添加一个输入框和一个用于显示搜索建议的下拉框。给它们分别加上 id,以便于之后的 JavaScript 代码调用。

<input type="text" id="search-input">
<div id="search-suggestions"></div>

2.2 CSS 样式

为了让下拉框呈现出合适的样式,我们需要在 CSS 中为其设置一些基本样式,比如宽度、高度、边框、背景等。

#search-suggestions {
  display: none;
  position: absolute;
  width: 200px;
  border: 1px solid #ccc;
  background-color: #fff;
}

这里设置了下拉框在开始时不可见,当用户输入文本时才显示出来,以及下拉框的基本样式。

2.3 JavaScript 实现

接下来,我们将使用 JavaScript 实现自动完成功能。

2.3.1 实现搜索建议的获取

这里我们使用 jQuery 提供的 AJAX 方法进行异步请求,从服务器获取搜索建议。我们需要监听输入框中的文本变化事件,当它发生变化时,立即发送 AJAX 请求获取搜索建议。

// 监听输入框中文本变化事件
$('#search-input').on('input', function() {
  // 发送异步请求获取搜索建议
  $.ajax({
    url: '/search',
    data: { keyword: $('#search-input').val() },
    success: function(result) {
      // 将搜索建议显示在下拉框中
      $('#search-suggestions').html(result).show();
    }
  });
});

这里我们使用了 jQuery 的 on 方法在输入框上绑定了一个 input 事件,当输入框中的文本变化时,就会触发该事件。在事件处理函数中,我们使用 AJAX 发送异步请求,并在成功回调函数中将服务器返回的搜索建议插入到下拉框中并显示出来。

2.3.2 实现搜索建议的选择

接下来,我们需要实现用户在搜索建议下拉框中的选择功能。当用户点击下拉框中的某个搜索建议时,我们需要将该建议的文本设置为输入框中的值,并隐藏下拉框。

// 监听搜索建议下拉框中搜索建议的点击事件
$('#search-suggestions').on('click', '.search-suggestion', function() {
  // 将搜索建议设置为输入框中的值
  $('#search-input').val($(this).text());
  // 隐藏搜索建议下拉框
  $('#search-suggestions').hide();
});

这里我们使用了 jQuery 的 on 方法,在搜索建议下拉框上绑定了一个 click 事件。当用户点击下拉框中的某个搜索建议时,就会触发该事件。在事件处理函数中,我们将该建议的文本设置为输入框中的值,并隐藏下拉框。

3. 示例说明

下面我们使用一个示例来说明如何在真实的项目中使用自动完成功能。

假设我们的网站有一个搜索框,用于搜索文章标题。我们希望搜索框能够自动显示与用户输入关键字相关的文章标题,并支持用户选择其中的文章标题。

3.1 HTML 结构

我们在 HTML 页面中添加如下结构:

<div id="search-box">
  <input type="text" id="search-input">
  <div id="search-suggestions"></div>
</div>

3.2 CSS 样式

我们在 CSS 中为搜索框及其相关元素设置样式:

#search-box {
  position: relative;
  width: 300px;
  height: 40px;
  margin: 20px auto;
  border: 1px solid #ccc;
  border-radius: 20px;
  background-color: #fff;
  box-shadow: 0 0 5px #ccc;
}
#search-input {
  position: absolute;
  top: 10px;
  left: 10px;
  width: 280px;
  height: 20px;
  font-size: 16px;
  border: none;
  outline: none;
}
#search-suggestions {
  display: none;
  position: absolute;
  top: 40px;
  left: 0;
  width: 300px;
  max-height: 200px;
  overflow-y: auto;
  border: 1px solid #ccc;
  background-color: #fff;
  box-shadow: 0 0 5px #ccc;
}
.search-suggestion {
  padding: 5px 10px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
}

3.3 JavaScript 实现

在 JavaScript 中,我们需要监听输入框中的文本变化事件,当它发生变化时,立即发送 AJAX 请求获取搜索结果,并将结果显示在下拉框中。在下拉框中,我们监听用户的点击事件,当用户选择某个搜索结果时,将该结果设置为输入框中的值。

// 监听输入框中文本变化事件
$('#search-input').on('input', function() {
  // 发送异步请求获取搜索结果
  $.ajax({
    url: '/search',
    data: { keyword: $('#search-input').val() },
    success: function(result) {
      // 将搜索结果显示在下拉框中
      $('#search-suggestions').html(result).show();
    }
  });
});

// 监听搜索结果下拉框中搜索结果的点击事件
$('#search-suggestions').on('click', '.search-suggestion', function() {
  // 将搜索结果设置为输入框中的值
  $('#search-input').val($(this).text());
  // 隐藏搜索结果下拉框
  $('#search-suggestions').hide();
});

在服务器端,我们需要根据用户输入的关键字查询相关的文章标题,并返回一个 HTML 代码块,用于在客户端中显示搜索结果。比如,我们可以使用 Node.js 和 Express 来实现这个功能:

app.get('/search', function(req, res) {
  // 从数据库中查询相关的文章标题
  var query = req.query.keyword;
  var results = db.query('SELECT title FROM articles WHERE title LIKE ?', '%' + query + '%');
  // 将查询结果格式化为 HTML 代码块
  var html = '';
  for (var i = 0; i < results.length; i++) {
    html += '<div class="search-suggestion">' + results[i].title + '</div>';
  }
  // 将 HTML 代码块返回给客户端
  res.send(html);
});

这样,当用户在搜索框中输入关键字时,搜索框就会自动显示出与该关键字相关的文章标题,并支持用户选择其中的文章标题。

4. 总结

至此,我们已经完成了 JavaScript 实现搜索框的自动完成功能(一)的完整攻略。整个过程的实现涉及到 HTML、CSS 和 JavaScript,同时也需要服务器端的支持,需要对 AJAX 和 jQuery 等技术有一定的了解。对于需求不是很复杂的场景,可以使用第三方库来实现自动完成功能,比如 Google 的 Autocomplete.js。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现搜索框的自动完成功能(一) - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java Validation Api实现原理解析

    Java Validation API 实现原理解析 简介 Java Validation API 是用于数据验证的标准 Java Bean 验证框架。该框架的目的是通过注释处理器来实现强类型的数据验证,以使编写验证代码变得简单易懂,同时保证数据验证的正确性和可维护性。 原理 Java Validation API 的实现原理主要包括以下几个方面: 注释处理…

    Java 2023年5月20日
    00
  • Java十分钟精通异常处理机制

    Java 十分钟精通异常处理机制 异常是一种程序中发生错误的情况,Java 提供了异常处理机制,能够更加优雅地处理这种错误。本文将介绍 Java 异常处理机制的基础知识和常用语法,让你在十分钟内精通异常处理机制。 异常的分类 Java 中的异常可以分为两种:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。…

    Java 2023年5月27日
    00
  • 2022最新Java泛型详解(360度无死角介绍)

    2022最新Java泛型详解(360度无死角介绍) 什么是Java泛型? Java泛型是Java SE 5.0版本中的新特性,提供了一种对类型进行参数化的机制,让代码的重用性和类型安全性都得到了极大的提高。 泛型主要有以下特点: 提高代码的可读性和可维护性 在编译期进行类型检查,提高代码的安全性 可以适用于各种类型,提高代码的重用性 如何使用Java泛型? …

    Java 2023年5月26日
    00
  • java读取文件里面部分汉字内容乱码的解决方案

    针对“java读取文件里面部分汉字内容乱码”的问题,可以从以下几个方面来解决: 问题原因 首先,造成该问题的原因是因为Java在读取文件时,使用的默认字符集(Charset)可能与文件本身的字符集不一致,导致出现乱码。 举例来说,如果一个文件的本身使用的字符集是UTF-8,而Java默认的字符集是GBK,那么在Java读取该文件时就可能产生乱码问题。 因此,…

    Java 2023年5月20日
    00
  • java -length的三种用法说明

    下面是关于“java -length的三种用法说明”的完整攻略: 1. 用法一:获取数组长度 在Java中,我们可以通过 .length 获取一个数组的长度,但是在一些情况下,使用 java -length 命令同样可以用于获取数组的长度。具体实现如下: java -cp . ClassName -length 其中,ClassName 是你的Java程序中…

    Java 2023年5月27日
    00
  • Java异常处理 Throwable实现方法解析

    Java 中的异常(Exception)处理机制能够帮助程序员更加优雅地解决程序运行过程中出现的错误,避免了程序的中断和崩溃。而在 Java 的异常处理机制中,核心的接口就是Throwable。在本篇攻略中,我将为大家详细讲解 Java 异常处理中 Throwable 接口的使用方法和实现技巧,同时提供两个示例分别说明如何使用 Throwable 接口进行异…

    Java 2023年5月27日
    00
  • Android使用URLConnection提交请求的实现

    Android使用URLConnection提交请求的实现攻略 在Android应用程序中,我们有时需要通过网络连接与服务器进行通讯,数据的传输有很多方式,其中常用的就是HTTP协议,而提交HTTP请求的方式也很多,比如常见的有Apache HttpClient、OkHttp等等。本文主要介绍基于JDK提供的URLConnection提交HTTP请求的方案。…

    Java 2023年6月15日
    00
  • 使用Java实现串口通信

    使用Java实现串口通信攻略 确定串口 在Java中,可以使用javax.comm库实现串口通信。首先需确认本机所连接的串口设备名称,以便后续步骤中选择正确的串口。 可以通过以下步骤确定串口:1. 打开“设备管理器”(Windows系统中)2. 展开“端口(COM和LPT)”,查看当前连接的串口设备的名称。 导入javax.comm库 在Java中使用jav…

    Java 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部