javascript写的一个表单动态输入提示的代码

要实现JavaScript写的一个表单动态输入提示,我们需要使用以下步骤:

  1. HTML页面中创建表单输入框及提示框的DOM节点;
  2. 监听表单输入框的keyup事件,获取输入框中输入的内容;
  3. 根据输入的内容动态生成提示框中的内容;
  4. 实现鼠标移动到提示框中的选项可以高亮并填充到输入框中;
  5. 实现键盘上下键可以在提示框中切换选项并填充到输入框中;
  6. 实现鼠标点击或回车键可以将选中的选项填充到输入框中。

下面是一个示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表单动态输入提示</title>
</head>
<body>
    <form>
        <label for="search">Search:</label>
        <input type="text" id="search" name="search">
        <div id="tip"></div>
    </form>
    <script>
        const searchInput = document.querySelector('#search');
        const tipDiv = document.querySelector('#tip');
        let dataList = ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig', 'grape', 'honeydew'];

        searchInput.addEventListener('keyup', function(e) {
            let inputValue = e.target.value;
            if (inputValue) {
                let filterDataList = dataList.filter(item => item.toLowerCase().includes(inputValue.toLowerCase()));
                let showTip = "";
                for (let i = 0; i < filterDataList.length; i++) {
                    showTip += `<div class="item">${filterDataList[i]}</div>`
                }
                tipDiv.innerHTML = showTip;
            } else {
                tipDiv.innerHTML = "";
            }
        });

        tipDiv.addEventListener('mouseover', function(e) {
            if (e.target.classList.contains('item')) {
                removeClass();
                e.target.classList.add('active');
            }
        });

        tipDiv.addEventListener('mouseout', function(e) {
            if (e.target.classList.contains('item')) {
                e.target.classList.remove('active');
            }
        });

        tipDiv.addEventListener('mousedown', function(e) {
            if (e.target.classList.contains('item')) {
                searchInput.value = e.target.innerText;
                tipDiv.innerHTML = "";
            }
        });

        function removeClass() {
            const activeElement = document.querySelector('.active');
            if (activeElement) {
                activeElement.classList.remove('active');
            }
        }
    </script>
</body>
</html>

在这个示例代码中,我们创建了一个表单输入框和一个提示框的DOM节点。在输入框中输入的内容触发keyup事件,获取输入框中输入的内容,并根据输入的内容动态生成提示框中的内容。在提示框中,我们绑定了鼠标mouseover事件和mousedown事件,用户可以通过鼠标在提示框中选取内容并填充到输入框中。同时我们也实现了键盘上下键的监听,用户可以通过键盘上下键在提示框中快速切换选项并填充到输入框中。

以上是一个示例代码的实现,如果需要更多的表单动态输入提示效果,可以在以上示例代码基础上进行扩展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript写的一个表单动态输入提示的代码 - Python技术站

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

相关文章

  • js中值类型和引用类型的区别介绍

    js中值类型和引用类型的区别介绍 在JavaScript中,变量分为值类型和引用类型。值类型主要包括基本类型数据,比如数字、字符串、布尔值等,引用类型主要包括对象、数组、函数等。两者在定义、赋值和传递参数等方面有着不同的表现。 值类型 定义 值类型的变量在定义的时候,会直接将数据储存在栈内存中。 let a = 1 赋值 当把一个值类型的变量复制到另一个变量…

    JavaScript 2023年6月10日
    00
  • 了解一下XSS

    XSS,即跨站脚本攻击(Cross-Site Scripting),是一种常见的网络安全漏洞,攻击者通过在网页中注入恶意脚本代码,使得浏览器执行这些脚本,从而控制网页上的内容或者获取用户的敏感信息。XSS 攻击一般分为反射型、存储型和 DOM 型三种类型。 1. 反射型 XSS 攻击 反射型 XSS 攻击是指攻击者通过向目标网站提交带有恶意脚本代码的请求,使…

    JavaScript 2023年4月25日
    00
  • nodejs读取memcache示例分享

    下面我将为你详细讲解“Node.js读取Memcache示例分享”的完整攻略。这个过程将包括以下两个示例: 示例1:安装Node-memcache模块 Node-memcache是Node.js下的Memcache客户端模块,它可以帮助你连接到Memcache服务器并读取数据。请按照以下步骤进行安装:1.打开终端并进入项目目录。2.在终端中键入以下命令并按回…

    JavaScript 2023年5月19日
    00
  • js实现为a标签添加事件的方法(使用闭包循环)

    为 a 标签添加事件可以使用 JS来实现。其中最简单的方法就是通过给每个a标签添加 onclick 事件来实现。但是这种方式比较繁琐,尤其是当页面中大量的 a 标签时,维护起来会非常麻烦。因此我们可以使用闭包循环来为所有 a 标签添加事件。 以下是实现方式: 首先我们需要在 JS 文件中获取所有的 a 标签 const links = document.qu…

    JavaScript 2023年6月10日
    00
  • 深入理解JSON数据源格式

    深入理解JSON数据源格式 什么是JSON? JSON是JavaScript Object Notation的缩写,它是一种轻量级的数据交换格式,易于理解和使用。它基于一种JavaScript子集,但考虑到其实际用途,它是一种独立于语言的数据格式。JSON格式是一种键值对的数据结构,它采用Unicode字符集。 JSON的基本语法 JSON数据格式由两个大括…

    JavaScript 2023年5月27日
    00
  • jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题

    在IE6、7、8中,无法使用原生的JSON.stringify函数,因此如果需要将JavaScript对象转化为JSON字符串,我们需要使用jQuery中的$.parseJSON和$.stringify方法。 下面是解决方案的完整攻略: 引入jQuery库 在或中引入jQuery库: <!DOCTYPE html> <html> &l…

    JavaScript 2023年5月27日
    00
  • AngularJS实现ajax请求的方法

    下面就是AngularJS实现ajax请求的方法的完整攻略: 1. 准备工作 在使用AngularJS实现ajax请求之前,我们需要引入AngularJS库文件,并在html文件中定义一个<div>元素作为AngularJS的应用入口,并在该元素上定义ng-app指令。 <!DOCTYPE html> <html ng-app=…

    JavaScript 2023年6月11日
    00
  • JS简单添加元素新节点的方法示例

    下面我来详细讲解“JS简单添加元素新节点的方法示例”的完整攻略。 什么是添加新节点? 在 JavaScript 中,向 HTML 文档中添加节点(节点就是 HTML 元素)的过程称为添加新节点。 添加新节点的方法 使用 JavaScript 可以轻松地添加新节点到 HTML 页面中。下面我们来看看两个添加新节点的示例方法。 方法一:appendChild()…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部