👨‍💻 使用纯 Javascript 制作自动完成输入框🔥🔥

2025-06-10

👨‍💻 使用纯 Javascript 制作自动完成输入框🔥🔥

大家好,希望大家在隔离期间一切顺利,并努力学习新知识。由于印度封锁,我开始利用所有空闲时间写博客。

所以,在这篇文章中,我们将学习如何编写一个带有自动完成功能的简单搜索功能(就像 Google 在你搜索某些内容时显示的一样)。我们不会讨论后端。我会另写一篇博客来专门讲解。那就开始吧……

下面是我们要构建的示例

首先,我们输入简单应用程序的 HTML,如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
   <link rel="stylesheet" href="index.css"/>
</head>
<body>
   <div class="container">
        <div class="search-container">
           <input type="text" onkeyup="filterNames(event)">
       </div>
       <ul class="list-container" id ="list-container">
           <li>Kushal Sharma</li>
       </ul>
   </div>
</body>
<script src="index.js"></script>
</html>

现在,让我们用一点 CSS 来设计应用程序的样式:

*{
   box-sizing: border-box;
   margin: 0px;
   padding: 0px;
}
.container{
   margin-top: 25px;
   margin-left:auto;
   margin-right: auto;
   min-height: 500px;
   width: 80%;
   border: 1px solid black;
}
.search-container{
   width: 100%;
}
.search-container input{
   width: 100%;
   height: 40px;
   font-size: 25px;
}

.list-container li{
   list-style: none;
   border: 1px solid red;
   padding: 15px 15px;
   font-size: 25px;
}

现在我们的应用程序如下所示:

替代文本

只需少量的样式就能实现自动完成功能。现在开始自动完成的流程:我们需要筛选出与输入字符匹配的记录。为此,我们将这些记录存储在 JSON 数组中。

接下来我们新建一个文件保存为index.js,并输入以下代码:

const names = [
   {
       name:"kushal sharma",
   },
   {
       name:"Jeremy",
   },
   {
       name:"john",
   },
   {
       name:"sandeep",
   },
   {
       name:"mohit",
   },
   {
       name:"sanjeev",
   },
   {
       name:"maininder",
   },
   {
       name:"Ajay",
   }
]

(简单的数组文字,例如“ name = [“kushal”,”jeremy”,”john”,”sachin”] '也可以工作,但我更喜欢使用 JSON)。

当我们打开 index.html 文件时,我们希望显示名称,以便我们可以在其中进行筛选。为此,我们需要将每个名称转换为 HTML DOM 元素。我们将使用一个函数将名称转换为 DOM 元素,并将它们显示在 UI 上,如下所示:

function renderNames(arrayOfNames) {
   let liElemet = "" ;
   for (let i= 0; i <arrayOfNames.length; i++) {
   liElemet += `<li>${arrayOfNames[i].name}</li>`
   }
   document.getElementById("list-container").innerHTML= liElemet;
}

因此,我们在这里创建了一个函数 renderNames,它接受 arrayOfNames 参数,该参数由我们之前创建的名称数组组成。

在这行代码中,我们正在制作一个列表

  • 元素并在元素内部逐一写入名称。
    liElemet += `<li>${arrayOfNames[i].name}</li>`
    

    一旦我们完成所有

  • 元素名称我们告诉 JavaScript 将所有这些元素添加为列表容器的子元素,列表容器是一个无序列表
      元素。

      现在,我们需要通过传递名称数组来调用此函数,如下所示:

    renderNames(names);
    

    现在我们可以看到我们所有人的名字列表:

    替代文本

    接下来,我们将开发主要功能。首先,我们需要捕捉正在输入的内容。为此,我们将使用 HTML 事件和 JavaScript 代码。浏览器窗口中发生的每次更改都是一个事件。例如,按下某个键,它也是一个事件。移动鼠标和调整窗口大小也是一个事件。因此,由于我们正在进行搜索,因此我们需要处理键盘的按键事件。

    <input type="text" onkeyup="filterNames(event)">
    

    这里我们添加了 onkeyup 属性,它调用 filterNames() 函数并将事件作为参数传递。事件参数包含有关该事件的所有信息,包括触发位置、目标元素、值等等。

    因此让我们创建 filterNames() 函数:

    function filterNames(event) {
       var searchvalue = event.target.value;
       var filterNames = names.filter((v,i)=>{
           return(v.name.includes(searchvalue));
       })
       renderNames(filterNames);
    }
    

    在 filterNames() 函数中,我们使用“event.target.value”来捕获按下的按键,然后过滤数组中的名称,只返回包含输入字符的名称。之后,再次使用 filter() 方法返回的新名称数组调用 renderNames() 函数。

    替代文本

    现在您可以在搜索示例中看到,当我输入字符“sa”时,返回两个名称“sandeep”和“sanjeev”,其中都包含字符“sa”。

    太棒了!我们用纯 JavaScript 实现了自动完成功能的搜索!

    希望你喜欢这篇文章,如果你有任何问题,请在评论区留言。关注我的推特⇒推特,了解我每天的工作进度。

    您还可以在 Dev 上关注我,以便在我发布新博客时收到通知。

  • 鏂囩珷鏉ユ簮锛�https://dev.to/sharmakushal/make-autocomplete-input-box-in-pure-javascript-3p3h
    PREV
    每个人都应该知道的 5 个 Git 命令
    NEXT
    为什么我不使用 LinkedIn 以及为什么你也应该使用!