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日

相关文章

  • Windows Azure VM上配置FTP服务器

    接下来我会分享一份完整的“Windows Azure VM上配置FTP服务器”的攻略,详细讲解每个步骤的操作和示例。 准备工作 首先,确保你已经创建了一个 Windows Azure 虚拟机(VM),并且你已经登录到了 VM 的管理页面。 安装IIS和FTP 在 Windows Server 2016 或者更早的版本中,可以通过 Server Manager…

    Azure 2023年5月26日
    00
  • 在IIS上部署Go API项目

    关于在IIS上部署Go API项目的完整攻略,大致步骤如下: 1. 安装IIS 如果你的机器上还没有安装IIS,那么需要先安装IIS。这里我们以Windows Server 2016为例进行讲解。具体步骤如下: 在Windows Server Manager中,点击“添加角色和功能”。 在“添加角色和功能向导”的第一个界面中,点击“下一步”。 在第二个界面中…

    Azure 2023年5月26日
    00
  • Win11测试版25169.1000更新发布(附完整更新日志)

    Win11测试版25169.1000更新发布攻略 最近,微软发布了Win11测试版25169.1000的更新,本篇攻略将会讲解如何更新Win11,并提供完整的更新日志。 步骤一:备份数据 在开始更新前,建议用户先备份重要数据,避免数据丢失。可以使用操作系统自带的备份工具或第三方备份软件进行备份。 步骤二:检查更新 在Win11操作系统上,你可以通过以下步骤检…

    Azure 2023年5月27日
    00
  • .NET做人脸识别并分类的实现示例

    接下来我将详细讲解 ” .NET 做人脸识别并分类的实现示例 ” 的攻略。 步骤一:安装依赖包 首先,我们需要安装以下两个关键的 NuGet 包: Microsoft.ProjectOxford.Face:该软件包提供了对 Microsoft Project Oxford 强大的人脸识别工具的访问。 它包括各种属性分析,以及现实世界中用于人脸分析的关键必要功…

    Azure 2023年5月25日
    00
  • win10专业版永久激活秘钥/激活码/序列号推荐 附激活工具

    “win10专业版永久激活秘钥/激活码/序列号推荐 附激活工具”攻略 如果你想在Win10专业版上永久激活,这里提供了一些有效的方法。 方法1:使用正版的序列号 如果你有正版的Win10专业版序列号,那么激活过程非常简单,只需按照以下步骤操作: 首先,打开“设置”菜单,点击“更新和安全”选项; 在“更新和安全”页面中,选择“激活”选项; 输入Win 10专业…

    Azure 2023年5月26日
    00
  • 最新2021win10企业版激活秘钥推荐 附激活工具+教程

    最新2021win10企业版激活秘钥推荐 附激活工具+教程 本文将介绍Win10企业版激活的一个合法方法,并提供激活工具及详细的操作步骤。 准备工作 在开始操作之前,请先准备以下内容: 一台未激活的Win10企业版电脑 下载并安装ActivationToolkit软件 操作步骤 第一步:备份证书 打开计算机,找到“此电脑”中的“C:\Windows\Syst…

    Azure 2023年5月25日
    00
  • Windows下通过FTP自动备份数据到服务器并删除指定天数前的备份

    下面我将详细讲解如何在Windows下通过FTP自动备份数据到服务器并删除指定天数前的备份。 准备工作 在进行备份前,需要先确定以下几个要素: FTP服务地址、端口号、用户名、密码; 本地待备份数据存储路径; 服务器备份存储路径; 指定备份文件要保存的天数。 实现方法 1. 安装WinSCP软件 首先需要安装WinSCP软件,这是一个主流的Windows平台…

    Azure 2023年5月25日
    00
  • win10专业版+企业版激活码分享 附激活工具

    Win10专业版+企业版激活码分享及激活工具使用攻略 本攻略将详细讲解如何使用激活工具激活Win10专业版和企业版,并提供免费激活码,帮助用户快速激活系统。 步骤一:下载激活工具 用户可以在网上搜索到许多不同的Win10激活工具,这里我们推荐使用KMS激活工具。 KMS激活工具下载链接:https://kms.03k.org/KMS-VL-ALL-7.2.0…

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