JavaScript实现带自动提示的文本框效果代码

下面是详细的JavaScript实现带自动提示的文本框效果代码攻略:

准备工作

在实现带自动提示的文本框效果之前,需要准备以下工作:

  • 一个文本框,用于用户输入文本。
  • 一个提示框,用于显示自动提示的信息。
  • 一份数据源,用于提取需要自动提示的信息。

实现过程

1. 实现文本框输入事件的监听

首先,需要监听文本框的输入事件,当用户输入文本时,我们需要从数据源中提取自动提示信息并显示在提示框中。

示例代码:

let input = document.querySelector("#text-input");
let hintBox = document.querySelector("#hint-box");

input.addEventListener("input", function(event) {
  let inputValue = event.target.value;
  let dataList = getDataList(inputValue); // 从数据源中获取符合条件的提示信息列表
  showHintList(dataList, hintBox); // 将提示信息列表显示到提示框中
});

2. 实现数据源的筛选

在监听到文本框输入事件之后,需要从数据源中获取符合条件的提示信息列表。例如,用户在文本框输入“ab”时,需要从数据源中提取出以“ab”开头的信息列表。

示例代码:

function getDataList(keyword) {
  let dataList = []; // 存储符合条件的提示信息

  for (let i = 0; i < dataSource.length; i++) {
    let dataItem = dataSource[i];

    if (dataItem.startsWith(keyword)) {
      dataList.push(dataItem);
    }
  }

  return dataList;
}

3. 实现提示框的显示

当获取到符合条件的提示信息列表之后,需要将其显示在提示框中。

示例代码:

function showHintList(dataList, hintBox) {
  hintBox.innerHTML = ""; // 清空提示框内容

  for (let i = 0; i < dataList.length; i++) {
    let hintItem = document.createElement("li"); // 创建提示信息项
    hintItem.innerHTML = dataList[i];
    hintBox.appendChild(hintItem);
  }
}

4. 实现提示框点击事件的监听

用户在点击提示框中的某个提示信息时,需要将该提示信息填入文本框中。

示例代码:

hintBox.addEventListener("click", function(event) {
  if (event.target.tagName.toLowerCase() === "li") {
    input.value = event.target.innerText;
    hintBox.innerHTML = ""; // 清空提示框内容
  }
});

示例说明

这里提供两个示例说明,分别是:

示例一:从本地文件中读取数据

let input = document.querySelector("#text-input");
let hintBox = document.querySelector("#hint-box");

let dataSource = [];

fetch("data.txt")
  .then(response => response.text())
  .then(data => {
    dataSource = data.split("\n"); // 将数据按行分割成数组
  });

input.addEventListener("input", function(event) {
  let inputValue = event.target.value;
  let dataList = getDataList(inputValue);
  showHintList(dataList, hintBox);
});

function getDataList(keyword) {
  let dataList = [];

  for (let i = 0; i < dataSource.length; i++) {
    let dataItem = dataSource[i];

    if (dataItem.startsWith(keyword)) {
      dataList.push(dataItem);
    }
  }

  return dataList;
}

function showHintList(dataList, hintBox) {
  hintBox.innerHTML = "";

  for (let i = 0; i < dataList.length; i++) {
    let hintItem = document.createElement("li");
    hintItem.innerHTML = dataList[i];
    hintBox.appendChild(hintItem);
  }
}

hintBox.addEventListener("click", function(event) {
  if (event.target.tagName.toLowerCase() === "li") {
    input.value = event.target.innerText;
    hintBox.innerHTML = "";
  }
});

以上代码从本地文件data.txt中读取数据作为数据源,用户在文本框中输入字符后会自动从数据源中筛选符合条件的提示信息,并显示在提示框中。

示例二:联想搜索

let input = document.querySelector("#text-input");
let hintBox = document.querySelector("#hint-box");

let dataSource = [];

fetch("https://api.github.com/users/WeiChiaChang/repos")
  .then(response => response.json())
  .then(data => {
    dataSource = data.map(item => item.name); // 从API返回数据中提取出每个仓库的名称作为数据源
  });

input.addEventListener("input", function(event) {
  let inputValue = event.target.value;
  let dataList = getDataList(inputValue);
  showHintList(dataList, hintBox);
});

function getDataList(keyword) {
  let dataList = [];

  for (let i = 0; i < dataSource.length; i++) {
    let dataItem = dataSource[i];

    if (dataItem.includes(keyword)) {
      dataList.push(dataItem);
    }
  }

  return dataList;
}

function showHintList(dataList, hintBox) {
  hintBox.innerHTML = "";

  for (let i = 0; i < dataList.length; i++) {
    let hintItem = document.createElement("li");
    hintItem.innerHTML = dataList[i];
    hintBox.appendChild(hintItem);
  }
}

hintBox.addEventListener("click", function(event) {
  if (event.target.tagName.toLowerCase() === "li") {
    input.value = event.target.innerText;
    hintBox.innerHTML = "";
  }
});

以上代码从github的开发者API接口中获取仓库名称作为数据源,用户在输入时会自动从数据源中筛选包含输入字符的相关信息,并显示在提示框中,以实现联想搜索功能。

总结

在使用js实现自动提示的文本框效果时,需要注意以下几个点:

  • 文本框中输入事件的监听。
  • 数据源的提取与筛选。
  • 提示框的显示与样式调整。
  • 提示框中提示信息的点击事件监听。
  • 跨域请求的处理问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现带自动提示的文本框效果代码 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Win11 Build 22000.282 Beta/Release 预览版更新补丁KB5006746推送(附更新内容大全)

    Win11 Build 22000.282 Beta/Release 预览版更新补丁KB5006746推送(附更新内容大全)攻略 更新内容大全 Win11 Build 22000.282 Beta/Release 预览版更新补丁KB5006746的更新内容大全包括以下内容: 修复了文件资源管理器在某些情况下崩溃的问题 修复了微软团队在 Teams 中的问题 …

    Azure 2023年5月25日
    00
  • Hadoop组件简介

    Hadoop组件简介 在分布式计算领域中,Hadoop是应用非常广泛的一种开源软件框架,常用于海量数据的存储和处理。Hadoop架构中包含很多组件,这些组件在协同工作时实现了海量数据的高效处理和处理方案的拓展性。在下面的内容中,我们将介绍Hadoop的各个组件,它们的作用以及如何使用它们来解决特定的问题。 Hadoop组件 HDFS HDFS是Hadoop分…

    Azure 2023年5月25日
    00
  • win10装机选择哪个版本 win10各个版本的区别

    当我们需要给电脑安装Windows 10操作系统时,我们需要考虑操作系统的版本选择。Windows 10操作系统是有不同的版本,这些版本都有着自己的特点与不同的应用场景。在进行装机前,需要考虑到自己的需求并根据需求来选择版本。 Windows 10版本介绍 Windows 10有多个版本,如下所示:- Windows 10家庭版:适用于普通家庭用户,提供家庭…

    Azure 2023年5月25日
    00
  • Sql Server 2016新功能之Row-Level Security(值得关注)

    Sql Server 2016新功能之Row-Level Security 什么是Row-Level Security? 在传统的数据库访问安全控制中,只能根据用户的身份和权限来进行安全控制,但是无法对每行数据进行细粒度的控制,也就是无法针对不同用户对同一张表的不同行数据进行控制,这就是传统数据库安全控制所无法解决的问题。而Row-Level Securit…

    Azure 2023年5月25日
    00
  • Win10周年更新14393.82和累积更新KB3176936/KB3176934补丁

    Win10周年更新14393.82和累积更新KB3176936/KB3176934是Win10系统更新的重要补丁,能够修复系统缺陷提高系统的稳定性和安全性,以下为相关攻略。 Win10周年更新14393.82 Win10周年更新14393.82是Win10系统的一次大规模更新,其中包括修复了许多BUG并且针对系统蓝屏、CPU占用过高、系统卡顿等问题进行了优化…

    Azure 2023年5月25日
    00
  • JMP13 Pro怎么安装?SAS JMP Statistical 13专业版注册激活教程(附下载)

    安装SAS JMP Statistical 13专业版和注册激活是一项相对简单而且必要的工作。下面,我会为大家详细讲解JMP13 Pro怎么安装,并附带注册和激活教程,让您无忧完成安装和使用。 下载SAS JMP Statistical 13专业版 首先,您需要先下载SAS JMP Statistical 13专业版的安装包,这里提供一个下载链接,链接:ht…

    Azure 2023年5月25日
    00
  • C# 中SharpMap的简单使用实例详解

    C# 中SharpMap的简单使用实例详解 什么是SharpMap SharpMap是一个用于展示地理信息的C#开源框架。它支持众多的地理信息数据格式和投影方式,并且可以与许多数据库和WebGIS系统无缝集成。 SharpMap的基本用法 安装SharpMap 在Visual Studio中创建一个C#项目后,可以使用NuGet包管理器搜索并安装SharpM…

    Azure 2023年5月26日
    00
  • ABP基础架构深入探索

    ABP基础架构深入探索攻略 ABP(Asp.Net Boilerplate)是一个基于ASP.NET Core的开源应用程序框架。 简介 为了实现跨平台开发,ABP采用了单体应用结构,将整个应用平台看作是一个大型的应用,将各个子系统与模块看作具备可独立可集成能力的组件,协同工作构建起整个应用生态架构。 ABP框架将应用程序分为四层:演示层(Presentat…

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