zoukankan      html  css  js  c++  java
  • jQuery仿google搜索下拉列表 支持键盘上下键 支持鼠标移动

    这几天公司要做一个和google搜索差不多的一个搜索下拉别表..


         <div>    <input type="text" name="s" id="word" value="" url="ajax.aspx?id=sousuo" autocomplete="off">
            <input type="submit" value="搜索">
            <div id="suggestions">
        </div>




    <script type="text/javascript">


        var currentindex = -1;
        var size = 0;
        var currentTxt;
        function getSuggestion(w) {
            var url = $("#word").attr("url");
            var t = setTimeout(function () {
                $.getJSON(url, { w: w }, showData);
            }, 500);
        }
        function showData(data) {
            var suggestions = $("#suggestions").html("");
            var input = $("#word");
            if ($(data).length > 0) {
                $(data).each(function (i, it) {
                    suggestions.append('<li >' + it + '</li>');
                })
                currentindex = -1;
                suggestions.show();
                suggestions.children("li").click(function () {
                    input.val($(this).text());
                    suggestions.hide();
                });
                size = $("#suggestions li").size();
                document.onclick = function (e) {
                    var e = e ? e : window.event;
                    var tar = e.srcElement || e.target;
                    if (tar.id != "suggestions") {
                        suggestions.hide();
                    }
                }
            }
            else {
                suggestions.hide();
            }
        }

        function movethis(up) {

            currentindex = currentindex + (up ? -1 : 1);
            if (currentindex == size) {
                currentindex = 0;
            }
            else if (currentindex < 0) {
                currentindex = size-1 ;
            }

            $("#suggestions li").removeClass("suggec");
            $($("#suggestions li")[currentindex]).addClass("suggec");
            var textvalue = $($("#suggestions li")[currentindex]).text();
       
            $("#word").val(textvalue);
        }
        $(function () {
            var input = $("#word");
            var suggestions = $("#suggestions").html("").hide();
            input.keyup(function (e) {
                if (e.keyCode != 40 && e.keyCode != 38) {
                    var word = $.trim(input.val());
                    if (word) {

                        getSuggestion(word);
                    }

                    else {
                        suggestions.hide();
                    }
                }

            });

            input.keyup(function (evn) {
                if (evn.keyCode == 38) {
                    movethis(true);
                }
                else if (evn.keyCode == 40) {
                    movethis(false);
                }
                else if (evn.keyCode == 13) {
                    $("#suggestions").hide();
                    $(".br").trigger("click");
                }
            })
            $("#suggestions").mouseover(function () { //鼠标滑过  
               
                select = $("#suggestions");
                select.children("li").mouseover(
                    function () {
                        $(this).addClass("suggec");
                        currentindex = $("#suggestions li").index(this);
                    });
            }).mouseout(function () { //鼠标滑出  
                $("#suggestions li").removeClass("suggec");
           
            });
            suggestions.width(input.outerWidth() - 1);

        })



    </script>

     ajax.aspx

     /*取到的json串.这边可以自己处理一下数据*/

    ["<span><b>魔法</b>提琴手</span>","<span><b>魔法</b>少女奈叶StrikerS</span>","<span><b>魔法</b>少女奈叶A's</span>","<span><b>魔法</b>少女奈叶</span>","<span><b>魔法</b>护士小麦</span>","<span><b>魔法</b>战士李维

    </span>","<span><b>魔法</b>阵都市</span>","<span><b>魔法</b>奇缘</span>","<span><b>魔法</b>先生涅吉!</span>","<span><b>魔法</b>先生涅吉!</span>","<span><b>魔法</b>少女砂沙美</span>","<span><b>魔法</b>战士李维

    </span>","<span><b>魔法</b>咪路咪路Charming</span>","<span><b>魔法</b>使派遣会社</span>","<span><b>魔法</b>小歌王</span>","<span><b>魔法</b>使的注意事项</span>","<span><b>魔法</b>学园MA</span>

    ","<span><b>魔法</b>先生 涅吉!~白翼 ALA ALBA~</span>","<span><b>魔法</b>禁书目录</span>","<span><b>魔法</b>保姆麦克菲</span>"]

  • 相关阅读:
    bzoj2763 [JLOI]飞行路线 分层图最短路
    [模板]分块/可修改莫队 (数颜色种类)
    gcd步数
    洛谷2378 因式分解 字符串
    bzoj1090 字符串折叠
    洛谷1034 NOIP2002 矩形覆盖
    Codeforces#441 Div.2 四*题
    SPFA的小优化
    洛谷1073 NOIP2009 最优贸易
    bzoj2100 [Usaco2010 DEC]Apple Delivery苹果贸易
  • 原文地址:https://www.cnblogs.com/dugou/p/2625185.html
Copyright © 2011-2022 走看看