• autocomplate


    $(function() {
        $("div[targetid]").each(function() {
            var $inputid = $(this).attr("targetid");
            var $posturl = $(this).attr("geturl");
            var $itembgcolor = $(this).attr("itembgcolor");
            var $innerhtml = "<input id='" + $inputid + "' type='text' style=' 100%; margin: 0;' />";
            $innerhtml += "<div class='floatdiv'></div>";
            $(this).append($innerhtml);
            $("#" + $inputid).keyup(function(e) { fetchKey(e, $posturl, $itembgcolor, $inputid); });
            $(this).find(".floatdiv").keydown(function(e) { keyFetchVal(e, $itembgcolor, $inputid); });
        });
        $("html").click(function() { hideList(); });
    })


    function fetchKey(e, posturl, itembgcolor, inputid) {
        var kvalue = kvalue = $(e.target).val(); // fetch data from textbox

        var whichCode = (window.Event) ? e.which : e.keyCode;

        if (whichCode == 13 || whichCode == 37 || whichCode == 39)     // the key is Enter、LEFT、RIGHT
        {
            return false;
        }
        else if (whichCode == 8 || whichCode == 32) // the key is Backspace and space
        {
            if ($.trim(kvalue) == "") {
                hideList();
                return false;
            }
            if (kvalue.length >= 1)
                fetch_search_info(kvalue, posturl, itembgcolor, inputid);
        }
        else if (whichCode == 40) //the key is downkey
        {
            var $pid = $(e.target).next();

            if ($pid.css("display") == 'none') { return false; }
            if ($pid.has("li")) {
                $pid[0].focus();
                if ($pid.find("." + itembgcolor)[0] == undefined) {
                    setBackgroundColor($pid.find("li:eq(0)"), itembgcolor);
                }
                else {
                    setBackgroundColor($pid.find("." + itembgcolor).next(), itembgcolor);
                }
            } else { return false; }
        }

        else if ((whichCode >= 45 && whichCode <= 57) || (whichCode >= 65 && whichCode <= 90) || (whichCode >= 96 && whichCode <= 105)) // the whichCode's value between 45~57 is number 0~9,65~90 is char a~z、A~Z , 96~105 is number 0~9
        {
            kvalue = $(e.target).val();
            if (kvalue.length >= 1)
                fetch_search_info(kvalue, posturl, itembgcolor, inputid);
        }
        else event.returnValue = false;
    }

    function fetch_search_info(keyVal, posturl, itembgcolor, inputid) {
        $.ajax({
            type: "post",
            url: posturl,
            data: "keyval=" + keyVal,
            success: function(result) {
                var data = eval(result);
                if (data == null || data.length == null) {
                    hideList();
                    return;
                }
                fetch_search_info_Callback(data, itembgcolor, inputid);
            }
        });
    }

    function fetch_search_info_Callback(result, itembgcolor, inputid) {
        var html = "";
        for (var i = 0; i < result.length; i++) {
            html += createhtml(result[i]["ClientID"], result[i]["ClientName"], itembgcolor, inputid);
        }
        if ($.trim(html) == "") {
            hideList();
        }
        else {
            $("#" + inputid).next().html("<ul>" + html + "</ul>");
            showList();
        }
    }

    function createhtml(id, text, itembgcolor, inputid) {
        return "<li onmouseover=\"setBackgroundColor(this,'" + itembgcolor + "')\" uid='" + id + "' onclick=\"setValue(this,'" + inputid + "')\">" + text + "</li>";
    }
    function setBackgroundColor(obj, itembgcolor) {
        $(obj).parent().parent().focus();
        $(obj).parent().find("li").removeClass(itembgcolor);
        $(obj).addClass(itembgcolor);
    }

    function setValue(obj, inputid) {
        $("#" + inputid).val($(obj).text());
        $("#" + inputid).attr("uid", $(obj).attr("uid"));
        $("#" + inputid).focus();
        hideList();
    }

    function keyFetchVal(e, itembgcolor, inputid) {
        var whichCode = (window.Event) ? e.which : e.keyCode;

        switch (whichCode) {
            case 13: // Enter
                {
                    setValue($(e.target).find("." + itembgcolor), inputid);
                }; break;
            case 38: //Upkey
                {
                    //e.preventDefault();
                    if ($(e.target).find("." + itembgcolor).prev()[0] == undefined) { return; }
                    setBackgroundColor($(e.target).find("." + itembgcolor).prev(), itembgcolor);
                } break;
            case 40: //Downkey
                {
                    //e.preventDefault();

                    if ($(e.target).find("." + itembgcolor).next()[0] == undefined) { return; }
                    setBackgroundColor($(e.target).find("." + itembgcolor).next(), itembgcolor);
                } break;
            default: break;
        }

        return true;
    }


    function hideList() {
        $("div[targetId]").find("div").slideUp('0.6');
    }
    function showList() {
        $("div[targetId]").find("div").slideDown('0.6');
    }

     ---------------------------------------

    html代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <style type="text/css">
            .selcolor
            {
                background-color: #FFFF99;
            }
            ul
            {
                list-style: none;
                padding: 0;
                margin: 0;
                font-size: 13px;
            }
            .floatdiv
            {
                background-color: White;
                position: absolute;
                z-index: 1000;
                100%;
                border: solid 1px #ACA899;
                height: 200px;
                overflow: auto;
                display: none;
            }
        </style>

        <script type="text/javascript" src="jquery-1.4.2.min.js"></script>

        <script type="text/javascript" src="json_autofill.js"></script>

    </head>
    <body>
        <div style=" 200px; position:relative;" targetid="Text1" geturl="Handler.ashx" itembgcolor="selcolor">
        </div>
    </body>
    </html>
     

  • 相关阅读:
    牛客 小乐乐和25
    codeforces 1303 D 二进制瞎搞
    codeforces 1307 D 最短路bz+贪心
    codeforces 1316 C math
    codeforces 1328E LCA
    codeforces 1335 E2 思维
    codeforces 1335 E1 思维
    codeforces 1342 D 贪心+后缀和
    codeforces 1348D (思维+贪心)
    codeforces 1362 E 进制的性质
  • 原文地址:https://www.cnblogs.com/zxh0208/p/2118409.html
Copyright © 2020-2023  润新知