js、ajax 输入框自动匹配

js、ajax 输入框自动匹配

   想做一个输入框自动匹配的功能,在网上找了好多的都没有找到想要的,可能是因为自己太笨了看不懂...所以就总结网上查找到的方法,自己写了一个,写出来是想分享给大家也是给自己的再加深一下印象。因为自己现在也是新手,代码质量不高,大家有好的建议也可以提出来哦。
   这个功能大概的思路是:在输入框下面添加一个div,用来显示匹配到的数据。这个div贴紧输入框,在输入框里没有输入东西时是隐藏起来的,用样式display为none实现这个功能。给输入框添加一个keyup()函数,输入的东西传到后台匹配,再将匹配到的数据传回前台,这时在函数里将显示数据的div的display设置为block就可以将数据展示出来。
   下面是功能图片展示和前台页面的代码,因为后台数据是用spring-boot框架结合ajax取的,所以要成功运行代码大家要改一下数据获取方式。

功能展示
输入字符后显示匹配信息
鼠标滑过和点击高亮显示
输入框显示选中的值
删掉一个字符后自动匹配


前台页面代码

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>下拉列表</title>

    <style>
        .tptitle{/*输入框所在的div*/
            position:absolute;
            top:0;
            left:0;
            height:30%;
            width:100%;
            border-width:1px;
            border-color:black;
            border-style: solid;
        }
        .tptitle_table{/*输入框所在的table*/
            position:absolute;
            top:10%;
            left:200px;
            height:10%;
            width:70%;
        }
        #typhooncode{/*输入框*/
            height:15px;
            width:180px;
        }
        #autoresult{/*在输入框下面用来显示匹配数据的div*/
            position:absolute;
            left:306px;
            top: 20.5%;
            height:150px;
            width:182px;
            border-width:1px;
            border-color:black;
            border-style: solid;
            overflow :auto;
            display:none;/*把div隐藏起来*/
        }
        #list{/*显示匹配数据的li*/
            position:absolute;
            top:0;
            left:0;
            text-align: left;
        }
        .result_li{/*显示数据的li*/
            list-style-type:none;/*去掉前面的原点符号*/
        }
    </style>
</head>
<script src="js/jquery-3.2.1.js"></script>
    <div class="tptitle" >

        <table class="tptitle_table" >
            <tr>
                <td width="100px">台风代码:</td>
                <td><input type="text" id="typhooncode" placeholder="请输入台风代码" /></td>
                <td>台风登录地:</td>
                <td><input type="text" id="landing_position1" /></td>
                <td>台风路径测试:</td>
                <td><input type="text" id="pathcode" placeholder="请输入台风代码"/></td>
                <td><input type="submit" onclick="test()" value="提交路径代码"/></td>
            </tr>
        </table>
        <div id="autoresult">
            <ul id="list"></ul>
        </div>
    </div>

    <script>
        //键盘--传递数据到后台再返回输出
        $(document).ready(function(){
            $("input#typhooncode,#landing_position1").keyup(function(){
                var typhooncode = document.getElementById("typhooncode").value;
                var landing_position1 = document.getElementById("landing_position1").value;
                $.post('api/base/test2', {typhooncode: typhooncode,landing_position1:landing_position1}, function (data) {
                    //console.log(data);测试有没有数据

                    var json = eval(data); //用eval()函数解析json对象
                    var tt = "";
                    $.each(json, function (index) {
                        //循环获取数据
                        var Month = json[index].typhooncode;
                        //在li元素里添加函数
                        tt += "<li class='result_li' onmouseover='mouseOver(this)' onmouseout='mouseOut(this)' onclick='mouseClick(this)'>"+ Month + "</li>";
                    });
                    document.getElementById("autoresult").style.display="block";//显示隐藏的div
                    $("#list").html('');
                    $("#list").html(tt);//将匹配数据显示到设置好的ul里
                })
            });
        });

        //点击变色
        var overColor='rgb(128, 188, 241)';//移入时的颜色
        var outColor='rgb(255, 255, 255)';//移出时的颜色
        var clickColor='rgb(68, 165, 251)';//点击时的颜色

        function mouseOver(obj) {
            if(obj.style.backgroundColor!=clickColor)
                obj.style.backgroundColor=overColor;
        }
        function mouseOut(obj){
            if(obj.style.backgroundColor!=clickColor)
                obj.style.backgroundColor=outColor;
        }
        function mouseClick(obj) {
            $(obj).siblings().css("background-color",outColor);//将所有的li元素背景设置为outColor
            obj.style.backgroundColor=clickColor;//将被点击到的li元素背景设置为clickColor
            var mClick=$(obj).text();//获取被点击(选中)li元素的文本内容
            $("#typhooncode").val(mClick);//将输入框的值替换为选中项内显示
            $("#autoresult").css("display","none");//隐藏显示匹配数据的div

        }

    </script>

</body>
</html>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值