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的接口数据校验

    介绍Java中的接口数据校验,通常使用的是验证框架Hibernate Validator。我们可以使用它来验证javabean实例的数据是否合法。 安装 Hibernate Validator 在Maven中,我们可以使用以下代码引入Hibernate Validator: <dependency> <groupId>org.hibe…

    Java 2023年6月1日
    00
  • 详解spring security 配置多个AuthenticationProvider

    下面是详细讲解“详解Spring Security配置多个AuthenticationProvider”的攻略。 什么是AuthenticationProvider 在Spring Security中,AuthenticationProvider用于将用户的输入凭证与系统中存储的凭证进行比较,来判断用户身份是否正确。如果匹配成功,则返回一个填充了用户信息和权…

    Java 2023年5月20日
    00
  • JAVALambda表达式与函数式接口详解

    JAVALambda表达式与函数式接口详解 Lambda表达式是Java 8中新增的一种语法,它使得Java语言变得更加简洁、高效。Lambda表达式就是将一个匿名内部类的实现变成了一种函数式风格,被称为“函数式编程”,同时Java 8中也新增了许多函数式接口来支持Lambda表达式,为Java程序员提供了更多的选择。 什么是Lambda表达式 Lambda…

    Java 2023年5月26日
    00
  • 常见的JVM参数有哪些?

    当我们运行Java程序时,JVM参数可以通过命令行传入,用于控制程序的行为和性能。下面介绍一些常用的JVM参数及其用法。 JVM参数列表 以下为常见的JVM参数列表: -Xmx: 设置Java堆内存的最大值 -Xms: 设置Java堆内存的初始值 -Xss: 设置线程栈的大小 -XX:PermSize: 设置永久代的初始值 -XX:MaxPermSize: …

    Java 2023年5月10日
    00
  • Java学习笔记之面向对象编程精解

    Java学习笔记之面向对象编程精解攻略 阅读前准备 在阅读本篇笔记之前,建议你已经掌握了Java基础语法知识,熟悉面向对象编程概念,并且至少有一定的Java编程经验。 攻略步骤 阅读原文并理解重点概念。 实践代码示例,并结合原文进行深入理解和巩固。 针对实践中遇到的问题,结合文中示例和相关资料,进行细致的排查和解决。 总结核心知识点,并加深印象。 重点概念 …

    Java 2023年5月23日
    00
  • Java使用黑盒方式模拟实现内网穿透

    Java使用黑盒方式模拟实现内网穿透攻略 什么是内网穿透? 内网穿透是一种技术,可以将内部网络中的服务通过外部的网络进行访问,在开发或实际运维中,内网穿透被广泛应用。 黑盒方式模拟内网穿透 黑盒方式模拟内网穿透的实现,即通过模拟一个中间站点来实现服务的穿透,让外部网络能够访问内部网络中的服务。可以使用Java语言实现。 实现步骤 从外部网络连接模拟中间站点。…

    Java 2023年5月24日
    00
  • Spring Boot超详细讲解请求处理流程机制

    Spring Boot超详细讲解请求处理流程机制 Spring Boot请求处理流程概述 在Spring Boot中,请求处理流程一般可以分为以下几个步骤: 浏览器发送HTTP请求。 请求到达本地服务器,并被Spring Boot框架接收。 Spring Boot对请求进行预处理,包括对请求头、请求参数、cookie进行解析,以及对请求URL进行映射。 根据…

    Java 2023年5月19日
    00
  • 详解Java8 新特性之日期API

    下面我将为您详细讲解 “详解Java8 新特性之日期API” 的完整攻略。 1. 了解Java8 中的日期API Java8中一项重要的变化就是提供了新的日期API。Java 8中引入了新的日期API是为了弥补旧API中存在的一些问题。使用旧的日期API中存在的问题包括不可变性、线程安全性和性能问题。Java 8中的新的日期API弥补了这些问题,并在操作日期…

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