模仿搜索框搜索提示案例笔记分享

搜索提示框效果

本案例是一个类似百度搜索时输入内容后在搜索框下按照搜索内容显示出相关搜索提示的效果 需要用到的技术是ajax和jQuery

大概效果如下

wMMaGQ.png

第一步:搭建基本HTML

主要由一个文本框和一个提示框组成

文本框为input标签

提示框为ur包含lu标签

基本效果如下

**注意 :**后边需要先把提示框隐藏
在这里插入图片描述

代码如下

body中的

 
<div class="container">
        <!-- 搜索框 -->
        <input type="text" id="sreach">
        <!-- 提示框 -->
        <div class="alert">
            <ul>
                <li>前端开发</li>
                <li>前端课程</li>
                <li>web前端</li>
            </ul>
        </div>
    </div>

css代码

<style>
        .container #sreach {
            width: 300px;

        }

        .container .alert {
            width: 300px;
            border: 1px solid lightgray;
            display: none;
        }

        .container .alert ul {
            list-style: none;
            padding: 0;
            margin: 0;
        }
    </style>

第二部分编写js代码

当然需要提前导入jQuery库

  • 第一步:捕捉用户数据
  • 第二部:获取json数据
  • 第三部:用户开始输入时显示提示框,按照用户的输入数据与json中的name对比使得json中的name包含用户的数据则进行下一步操作
  • 第四部:遍历获取对应name对象中的value值
  • 第五步 :将value的值更新到页面中
  • 第六步:在用户敲击键盘时在页面中情况之前更新的数据
  • 第七部:设置失去焦点时改为隐藏提示框

js代码:

    <script src="jquery-3.5.1.js"></script>
    <script>

        /*
        捕获用户输入行为
        1.绑定事件->keydown,keyup和可以press
        2.输入事件->input
        */
        //给搜索框绑定键盘输入事件
        $('#sreach').bind('input', function () {
            //删除之前的数据
            $('.alert>ul').empty();
            //1.根据用户和输入的内容动态获取相关数据
            var inputValue = $(this).val();
            
            $.getJSON('data/sever4.json', function (data) {
                //遍历json数据
                $.each(data, function (index, obj) {
                    //获取name
                    var name = obj.name;
                    //判断name值包含输入的值
                    if (name.indexOf(inputValue) >= 0) {
                        //获取value值
                        var value = obj.value;
                        // 遍历value值
                        $.each(value, function (index, text) {
                            //将每个value值添加到文本框
                          $('.alert>ul').append($('<li>'+text+'</li>'))
                        })
                    }
                })
            });
            //2.将提示框从隐藏状态改为显示状态
            $('.alert').css('display', 'block');
            //如果失去焦点将提示框改为隐藏
        }).bind('blur',function(){
            $('.alert').css('display', 'none');
            })

    </script>

json数据:

[{
    "name":"java",
    "value":[
        "java","javascript","javascript权威指南","java官方文档"
    ]
    
},

{
    "name":"成果",
    "value":[
        "诸葛大力","成三岁","铁憨憨","爱情公寓"
    ]
   
},
{
    "name":"周淑怡",
    "value":[
        "人均暗恋周淑怡","水龙姐","职业赛场说牛皮","周淑怡与药水哥"
    ]
}
]

完成后的效果:https://s1.ax1x.com/2020/09/08/wMacod.png)]

完整代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>搜索提示框效果</title>
    <style>
        .container #sreach {
            width: 300px;

        }

        .container .alert {
            width: 300px;
            border: 1px solid lightgray;
            display: none;
        }

        .container .alert ul {
            list-style: none;
            padding: 0;
            margin: 0;
        }
    </style>
</head>

<body>
    <div class="container">
        <!-- 搜索框 -->
        <input type="text" id="sreach">
        <!-- 提示框 -->
        <div class="alert">
            <ul>
                <li>前端开发</li>
                <li>前端课程</li>
                <li>web前端</li>
            </ul>
        </div>
    </div>


    <script src="jquery-3.5.1.js"></script>
    <script>

        /*
        捕获用户输入行为
        1.绑定事件->keydown,keyup和可以press
        2.输入事件->input
        */
        //给搜索框绑定键盘输入事件
        $('#sreach').bind('input', function () {
            //删除之前的数据
            $('.alert>ul').empty();
            //1.根据用户和输入的内容动态获取相关数据
            var inputValue = $(this).val();
            
            $.getJSON('data/sever4.json', function (data) {
                //遍历json数据
                $.each(data, function (index, obj) {
                    //获取name
                    var name = obj.name;
                    //判断name值包含输入的值
                    if (name.indexOf(inputValue) >= 0) {
                        //获取value值
                        var value = obj.value;
                        // 遍历value值
                        $.each(value, function (index, text) {
                            //将每个value值添加到文本框
                          $('.alert>ul').append($('<li>'+text+'</li>'))
                        })
                    }
                })
            });
            //2.将提示框从隐藏状态改为显示状态
            $('.alert').css('display', 'block');
            //如果失去焦点将提示框改为隐藏
        }).bind('blur',function(){
            $('.alert').css('display', 'none');
            })

    </script>

</body>

</html>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值