`
y1d2y3xyz
  • 浏览: 257169 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

百度的suggest

阅读更多
先看看效果

//js代码
//把百度的代码提出来了,然后根据我们自己项目的需求稍微做了些修改,效果和百度一样,只是我们这个去掉了表单提交
var suggestUrl = "http://192.168.1.110:8081//SearchService?method=intelSuggest";//这里是你请求数据的地址 
(function() {
    var M = navigator.userAgent.indexOf("MSIE") != -1 && !window.opera;
    var V = (document.compatMode == "BackCompat");
    function I(C) {
        return document.getElementById(C)
    }
    function K(C) {
        return document.createElement(C)
    }
    function S(C) {
        return String(C).replace(new RegExp("(^[\\s\\t\\xa0\\u3000]+)|([\\u3000\\xa0\\s\\t]+\x24)", "g"), "")
    }
    function U(C) {
        return String(C).replace(new RegExp("[\\s\\t\\xa0\\u3000]", "g"), "")
    }
    function P(G, X, C) {
        if (M) {
            G.attachEvent("on" + X, (function(Y) {
                return function() {
                    C.call(Y)
                }
            })(G))
        } else {
            G.addEventListener(X, C, false)
        }
    }
    function N(C) {
        if (M) {
            C.returnValue = false
        } else {
            C.preventDefault()
        }
    }
    function R(X) {
        if (M) {
            var G = document.createStyleSheet();
            G.cssText = X
        } else {
            var C = document.createElement("style");
            C.type = "text/css";
            C.appendChild(document.createTextNode(X));
            document.getElementsByTagName("HEAD")[0].appendChild(C)
        }
    }
    function H(G) {
        var X = document.forms[0];
        for (var Y in G) {
            if (!O(Y)) {
                X.appendChild(C(Y, G[Y]))
            } else {
                O(Y).value = G[Y]
            }
        }
        function C(Z, b) {
            var a = K("INPUT");
            a.type = "hidden";
            a.name = Z;
            a.id = "bdsug_ipt_" + Z;
            a.value = b;
            return a
        }
    }
    function O(Y) {
        var X = document.forms[0];
        var G = false;
        var C = X.getElementsByTagName("INPUT");
        for (var Z = 0; Z < C.length; Z++) {
            if (Y == C[Z].getAttribute("name")) {
                G = C[Z];
                return G
            } else {
                G = false
            }
        }
    }
    function L(G) {
        var X = document.forms[0];
        for (var C in G) {
            if (C == "f") {
                if (O("f")) {
                    if (O("f").id == "bdsug_ipt_f") {
                        X.removeChild(I("bdsug_ipt_f"))
                    } else {
                        O("f").value = "8"
                    }
                }
            } else {
                if (I("bdsug_ipt_" + C)) {
                    X.removeChild(I("bdsug_ipt_" + C))
                }
            }
        }
    }
    var A = 0;
    if (typeof window.bdsug != "object" || window.bdsug == null) {
        window.bdsug = {}
    }
    bdsug.sug = {};
    bdsug.sugkeywatcher = {};
    var J = (function() {
        function C(b) {
            var Z = this.__MSG_QS__;
            if (!Z[b]) {
                Z[b] = []
            }
            for (var a = 1, X = arguments.length, Y; a < X; a++) {
                Z[b].push(arguments[a])
            }
        }
        function G(Y) {
            var Z = this.__MSG_QS__[Y.type];
            if (Z == null) {
                return
            }
            for (var a = 0, X = Z.length; a < X; a++) {
                Z[a].rm(Y)
            }
        }
        return {
            ini: function(X) {
                X.__MSG_QS__ = {};
                X.on = C;
                X.dm = G;
                return X
            }
        }
    })();
    var F = (function() {
        var X = I("imeiName");
        var f;
        var h = 0;
        var C = 0;
        var d = "";
        var Y = "";
        var c;
        var j = false;
        var a = true;
        function Z() {
            if (a) {
                A = new Date().getTime();
                F.dm({
                    type: "start"
                });
                a = false
            }
        }
        function e(n) {
            if (a) {
                A = new Date().getTime();
                F.dm({
                    type: "start"
                });
                a = false
            }
            n = n || window.event;
            if (n.keyCode == 9 || n.keyCode == 27) {
                F.dm({
                    type: "hide_div"
                })
            }
            if (n.keyCode == 13) {
                N(n);
                F.dm({
                    type: "key_enter"
                })
            }
            if (n.keyCode == 86 && n.ctrlKey) {
                H({
                    n: 2
                })
            }
            if (f.style.display != "none") {
                if (n.keyCode == 38) {
                    N(n);
                    F.dm({
                        type: "key_up"
                    })
                }
                if (n.keyCode == 40) {
                    F.dm({
                        type: "key_down"
                    })
                }
            } else {
                if (n.keyCode == 38 || n.keyCode == 40) {
                    F.dm({
                        type: "need_data",
                        wd: X.value
                    })
                }
            }
        }
        function k() {
            var n = X.value;
            if (n == d && n != "" && n != Y && n != c) {
                if (C == 0) {
                    C = setTimeout(function() {
                        F.dm({
                            type: "need_data",
                            wd: n
                        })
                    },
                    100)
                }
            } else {
                clearTimeout(C);
                C = 0;
                d = n;
                if (n == "") {
                    F.dm({
                        type: "hide_div"
                    })
                }
                if (Y != X.value) {
                    Y = ""
                }
            }
        }
        function l() {
            h = setInterval(k, 10)
        }
        function g() {
            clearInterval(h)
        }
        function i() {
            if (j) {
                window.event.cancelBubble = true;
                window.event.returnValue = false;
                j = false
            }
        }
        function b(n) {
            X.blur();
            X.setAttribute("autocomplete", n);
            X.focus()
        }
        function G(n) {
            var n = n || window.event;
            if (n.keyCode == 13) {
                N(n)
            }
        }
        X.setAttribute("autocomplete", "off");
        var m = false;
        bdsug.sugkeywatcher.on = function() {
            if (!m) {
                if (M) {
                    X.attachEvent("onkeydown", e)
                } else {
                    X.addEventListener("keydown", e, false)
                }
                m = true
            }
        };
        bdsug.sugkeywatcher.off = function() {
            if (m) {
                if (M) {
                    X.detachEvent("onkeydown", e)
                } else {
                    X.removeEventListener("keydown", e, false)
                }
                m = false
            }
        };
        bdsug.sugkeywatcher.on();
        P(X, "mousedown", Z);
        P(X, "beforedeactivate", i);
        if (window.opera) {
            P(X, "keypress", G)
        }
        return J.ini({
            rm: function(n) {
                switch (n.type) {
                case "div_ready":
                    f = n.sdiv;
                    Y = X.value;
                    l();
                    break;
                case "clk_submit":
                    g();
                    X.blur();
                    X.value = n.wd;
                    break;
                case "ent_submit":
                    g();
                    X.blur();
                    break;
                case "key_select":
                    c = n.selected;
                    break;
                case "close":
                    g();
                    b("on");
                    break;
                case "mousedown_tr":
                    if (navigator.userAgent.toLowerCase().indexOf("webkit") != -1) {
                        g();
                        setTimeout(l, 2000)
                    }
                    j = true;
                    break
                }
            }
        })
    })();
    var W = (function() {
        var h;
        var a = I("imeiName");
        var l;
        var d = -1;
        var C;
        var m;
        var o;
        function n() {
            var r = l.rows;
            for (var q = 0; q < r.length; q++) {
                r[q].className = "ml"
            }
        }
        function e() {
            if (typeof(l) != "undefined" && l != null && h.style.display != "none") {
                var r = l.rows;
                for (var q = 0; q < r.length; q++) {
                    if (r[q].className == "mo") {
                        return [q, r[q].cells[0].innerHTML]
                    }
                }
            }
            return [ - 1, ""]
        }
        function i() {
            if (M) {
                o.style.display = "none"
            }
            h.style.display = "none"
        }
        function G() {
            n();
            this.className = "mo"
        }
        function b(q) {
            W.dm({
                type: "mousedown_tr"
            });
            if (!M) {
                q.stopPropagation();
                q.preventDefault();
                return false
            }
        }
        function c(q) {
            var r = q;
            return function() {
                var s = C[r];
                i();
				I("imeiName").value = s;
				I("imeiName").focus();
                /*W.dm({
                    type: "clk_submit",
                    oq: I("imeiName").value,
                    wd: s,
                    rsp: r
                })*/
            }
        }
        function f(q) {
            q = q || window.event;
            N(q);
            W.dm({
                type: "close"
            });
            i(); //(new Image()).src = "http://www.gpsoo.new/w.gif?fm=suggestion&title=%B9%D8%B1%D5&t=" + new Date().getTime()
        }
        function X() {
            var q = [a.offsetWidth, a.offsetHeight];
            h.style.width = ((M && V) ? q[0] : q[0] - 2) + "px";
            h.style.top = ((M && V) ? q[1] : q[1] - 1) + "px";
            h.style.display = "block";
            if (M) {
                o.style.top = ((M && V) ? q[1] : q[1] - 1) + "px";
                o.style.width = ((M && V) ? q[0] : q[0] - 2) + "px"
            }
        }
        function Y(r, q) {
            if (r && q) {
                var s = S(r);
                if (q.indexOf(s) == 0) {
                    q = p(q, s)
                } else {
                    if (q.indexOf(U(r)) == 0) {
                        s = U(r);
                        q = p(q, s)
                    } else {}
                }
            }
            q = q.replace("&", "&amp;");
            return q
        }
        function p(q, s) {
            var t = "<span>" + s + "</span>";
            var u = s.length;
            var r = "<b>" + q.substring(u) + "</b>";
            return (t + r)
        }
        function j() {
            l = K("TABLE");
            l.id = "st";
            l.cellSpacing = 0;
            l.cellPadding = 2;
            var s = K("tbody");
            l.appendChild(s);
            for (var t = 0, u = C.length; t < u; t++) {
                var r = s.insertRow( - 1);
                P(r, "mouseover", G);
                P(r, "mouseout", n);
                P(r, "mousedown", b);
                P(r, "click", c(t));
                var q = r.insertCell( - 1);
                q.innerHTML = Y(m, C[t])
            }
            h.innerHTML = "";
            h.appendChild(l);
            X();
            if (M) {
                o.style.display = "block";
                o.style.left = 0 + "px";
                o.style.top = a.offsetHeight + "px";
                o.style.width = a.offsetWidth + "px";
                o.style.height = h.offsetHeight - 10 + "px"
            }
        }
        function Z() {
            d = e()[0];
            if (d == -1) {
                W.dm({
                    type: "submit"
                })
            } else {
                W.dm({
                    type: "ent_submit",
                    oq: m,
                    wd: e()[1],
                    rsp: d
                })
            }
        }
        function k() {
            d = e()[0];
            n();
            if (d == 0) {
                W.dm({
                    type: "key_select",
                    selected: ""
                });
                I("imeiName").value = m;
                d--;
                L({
                    oq: m,
                    sug: C[d],
                    n: 1,
                    rsp: d,
                    f: 3
                })
            } else {
                if (d == -1) {
                    d = C.length
                }
                d--;
                var q = l.rows[d];
                q.className = "mo";
                W.dm({
                    type: "key_select",
                    selected: C[d]
                });
                I("imeiName").value = C[d];
                H({
                    oq: m,
                    sug: C[d],
                    n: 1,
                    rsp: d,
                    f: 3
                })
            }
        }
        function g() {
            d = e()[0];
            n();
            if (d == C.length - 1) {
                W.dm({
                    type: "key_select",
                    selected: ""
                });
                I("imeiName").value = m;
                d = -1;
                L({
                    oq: m,
                    sug: C[d],
                    n: 1,
                    rsp: d,
                    f: 3
                })
            } else {
                d++;
                var q = l.rows[d];
                q.className = "mo";
                W.dm({
                    type: "key_select",
                    selected: C[d]
                });
                I("imeiName").value = C[d];
                H({
                    oq: m,
                    sug: C[d],
                    n: 1,
                    rsp: d,
                    f: 3
                })
            }
        }
        return J.ini({
            rm: function(q) {
                switch (q.type) {
                case "div_ready":
                    h = q.sdiv;
                    o = q.frm;
                    break;
                case "give_data":
                    m = q.data.q;
                    C = q.data.s;
                    if (C.length != 0) {
                        j()
                    } else {
                        i()
                    }
                    break;
                case "key_enter":
                    Z();
                    break;
                case "key_up":
                    k();
                    break;
                case "key_down":
                    g();
                    break;
                case "hide_div":
                    i();
                    break;
                case "mousedown_other":
                    i();
                    break;
                case "window_blur":
                    i();
                    break;
                case "need_resize":
                    X();
                    break
                }
            }
        })
    })();
    var T = (function() {
        var C = document.forms[0];
        function G() {
            if (I("bdsug_ipt_sug")) {
                if (I("bdsug_ipt_sug").value == S(I("imeiName").value)) {
                    L({
                        n: 1,
                        sug: 1
                    })
                } else {
                    L({
                        f: 1
                    })
                }
            }
        }
        P(C, "submit", G);
        function X() {
            G();
            //C.submit()
        }
        function Y(Z) {
            H(Z);
            L({
                sug: 1,
                n: 1
            });
            //C.submit()
        }
        return J.ini({
            rm: function(Z) {
                switch (Z.type) {
                case "clk_submit":
                case "ent_submit":
                    Y({
                        oq:
                        Z.oq,
                        rsp: Z.rsp,
                        f: 3,
                        sugT: (new Date().getTime() - A)
                    });
                    break;
                case "submit":
                    X();
                    break
                }
            }
        })
    })();
    var B = (function() {
        var G = {};
        function X(C) {
            if (typeof G[C] == "undefined") {
                B.dm({
                    type: "request_data",
                    wd: C
                })
            } else {
                B.dm({
                    type: "give_data",
                    data: G[C]
                })
            }
        }
        function Y(C) {
            G[C.q] = C;
            B.dm({
                type: "give_data",
                data: G[C.q]
            })
        }
        return J.ini({
            rm: function(C) {
                switch (C.type) {
                case "response_data":
                    Y(C.data);
                    break;
                case "need_data":
                    X(C.wd);
                    break
                }
            }
        })
    })();
    var Q = (function() {
        var C;
        var X;
        function G(Y) {
            Q.dm({
                type: "need_cookie"
            });
            if (C) {
                document.body.removeChild(C)
            }
            C = K("SCRIPT");
            C.src = suggestUrl+"&wd=" + encodeURIComponent(Y) + "&callback=window.bdsug.sug&t=" + (new Date()).getTime();
            //C.charset = "gb2312";
            document.body.appendChild(C)
        }
        return J.ini({
            rm: function(Y) {
                switch (Y.type) {
                case "request_data":
                    G(Y.wd);
                    break;
                case "give_cookie":
                    var Z = Y.sug;
                    if (Z > 0) {
                        Z = 3
                    }
                    X = Z;
                    break
                }
            }
        })
    })();
    bdsug.sug = function(C) {
        bdsug.dm({
            type: "response_data",
            data: C
        })
    };
    bdsug.initSug = function() {
        bdsug.dm({
            type: "init"
        })
    };
    J.ini(bdsug);
    var E = (function() {
        function C() {
            if (navigator.cookieEnabled) {
                document.cookie = "su=0; domain=www.goocar.net"
            }
        }
        function G() {
            var X = (navigator.cookieEnabled && /sug=(\d)/.test(document.cookie) ? RegExp.$1: 3);
            E.dm({
                type: "give_cookie",
                sug: X
            })
        }
        return J.ini({
            rm: function(X) {
                switch (X.type) {
                case "close":
                    C();
                    break;
                case "need_cookie":
                    G();
                    break
                }
            }
        })
    })();
    var D = (function() {
        var Z = I("imeiName");
        var C;
        var c = document.forms[0];
        var Y;
        function a() {
            if (C.offsetWidth != 0 && Z.offsetWidth != C.offsetWidth) {
                D.dm({
                    type: "need_resize"
                })
            }
        }
        function d() {
            C = K("DIV");
            C.id = "sd_" + new Date().getTime();
            C.style.display = "none";
            c.appendChild(C);
            if (M) {
                Y = K("IFRAME");
                Y.style.display = "none";
                Y.style.position = "absolute";
                C.parentNode.insertBefore(Y, C)
            }
        }
        function b(e) {
            e = e || window.event;
            var f = e.target || e.srcElement;
            if (f == Z) {
                return
            }
            while (f = f.parentNode) {
                if (f == C) {
                    return
                }
            }
            D.dm({
                type: "mousedown_other"
            })
        }
        function X() {
            D.dm({
                type: "window_blur"
            })
        }
        function G() {
            var f = "#" + C.id;
            var e = [];
            D.dm({
                type: "div_ready",
                sdiv: C,
                frm: Y
            });
            setInterval(a, 100);
            P(document, "mousedown", b);
            P(window, "blur", X);
            e.push(f + "{border:1px solid #817F82;position:absolute;top:28px;left:0}");
            e.push(f + " table{width:100%;background:#fff;cursor:default}");
            e.push(f + " td{font:14px verdana;line-height:20px;text-indent:6px}");
            e.push(f + " td b{color:#333}");
            e.push(f + " .mo{background-color:#E2EAFF}");
            e.push(f + " .ml{background-color:#fff}");
            R(e.join(""))
        }
        bdsug.sug.initial = G;
        return J.ini({
            rm: function(e) {
                switch (e.type) {
                case "start":
                    G();
                    break;
                case "init":
                    d();
                    break
                }
            }
        })
    })();
    F.on("need_data", B);
    F.on("close_div", W);
    F.on("key_enter", W);
    F.on("key_up", W);
    F.on("key_down", W);
    F.on("hide_div", W);
    F.on("start", D);
    B.on("request_data", Q);
    B.on("give_data", W);
    bdsug.on("response_data", B);
    bdsug.on("init", D);
    W.on("clk_submit", F, T);
    W.on("ent_submit", F, T);
    W.on("submit", T);
    W.on("key_select", F);
    W.on("close", F, E);
    W.on("mousedown_tr", F);
    D.on("mousedown_other", W);
    D.on("need_resize", W);
    D.on("div_ready", F, W);
    D.on("window_blur", W);
    Q.on("need_cookie", E);
    E.on("give_cookie", Q);
    window.bdsug.initSug()
})();

//服务端返回的数据格式为:window.bdsug.sug({q:"a",p:true,s:["京AG4015","桂CA2755","桂CA2755xx","粤A9837G","苏KA2047","苏KA2047xx","苏KA3700","苏KA3700xx","苏A1X835","鄂AN9D29"]}) //window.bdsug.sug 这个函数是由前端传过去的,前段传过去的参数有:callback(在这个就是window.bdsug.sug这个值),wd(搜索的关键字),其他的参数根据你需要,由于是get方式请求的,后面最好加个随机值,这样避免URL请求缓存了

页面的HTML代码很简单:
<form name="f"><input type="text" name="imeiName" id="imeiName" /></form>
  • 大小: 18 KB
分享到:
评论

相关推荐

    仿百度、Google的suggest特效功能,源码分析

    这也是一个整合hibernate与struts连接数据库的项目,利用jQuery实现界面布局,ajax发送请求,即获取数据,轻巧的jQuery只用了仅仅30行代码就完成模仿百度或Google的suggest的模块功能,而且还附加了双击事件和回车...

    JQuery插件Suggest,实现类百度智能提示

    JQuery插件Suggest来做那些机票预订网站中的输入智能提示功能,这个功能对于用户体验性来说,挺不错的,用于实现类似百度的智能提示功能也是一个不错的选择。

    jquery suggest插件

    jQuery Suggest 插件是一种强大的前端开发工具,它能够为用户在输入框中提供实时的建议和匹配,类似于百度和Google搜索的自动补全功能。这种功能对于提高用户体验、简化用户输入过程具有显著效果。在网页应用中,它...

    KISSY.Suggest 仿百度、淘宝输入提示补全功能的组件及实例

    **KISSY.Suggest** 是一个JavaScript库,用于实现类似于百度和淘宝的输入提示补全功能。这个组件是基于KISSY框架构建的,旨在提供高效、易用且可定制的自动补全体验,适用于网页上的搜索框或者任何需要动态建议的...

    GoogleSuggest

    虽然百度的实现可能有自己的特点和优化,但其基本原理与GoogleSuggest相似,包括实时性、相关性和流行度的考虑。开发者在实现类似功能时,可以参考Google的技术经验,结合自身平台的特点进行定制化开发。 综上所述...

    python百度地图商家爬虫

    "Python百度地图商家爬虫"项目就是利用Python编程语言来抓取百度地图上的商家信息,以便进行数据分析或构建自己的数据库。这个项目涉及到的主要知识点包括Python的基础语法、网络请求库、解析HTML或JSON数据、数据...

    GoogleSuggest-src.zip

    这个"GoogleSuggest-src.zip"压缩包文件可能包含了一个使用Qt库实现的项目,用于模拟获取百度搜索下拉列表的过程,这在分析搜索引擎行为、优化网站关键词或者进行自动化测试时非常有用。 Qt是一个跨平台的C++图形...

    仿百度搜索功能附带数据库 java+jsp

    在项目的"**Suggest**"部分,很可能包含了实现搜索建议功能的代码或者资源。可能包括了一个JavaScript文件,用于监听用户在搜索框中的输入事件,当输入发生变化时,通过Ajax发送异步请求到服务器,服务器端的Java...

    输入框信息提示的实现(仿google、百度搜索框)(转载)

    ### 输入框信息提示的实现(仿google、百度搜索框) #### 概述 本文将详细介绍如何实现一个类似于Google和百度搜索框的输入框信息提示功能。该功能可以在用户输入文字时,从数据库中获取相关建议并实时展示,极大...

    winform文本框实现百度效果以及搜索记忆功能

    例如,你可以设置`AutoCompleteSource`为`CustomSource`,然后创建一个`AutoCompleteStringCollection`,添加可能的搜索关键词,最后设置`AutoCompleteMode`为`SuggestAppend`或`Suggest`,前者会在用户输入时显示...

    仿百度下拉建议检索项插件

    仿百度下拉,支持一个页面内出现多个不同的查询,使用方法简单易用。使用时需要先导入jquery1.9以上版本 // 调用方式 $("#xx").suggest({ url : "请求地址", field : "请求参数名称", // 查询结果中也必须包含该...

    jsonp 调用百度实现自动补全

    script.src = 'http://suggest.baidu.com/su?wd=关键字&cb=handleResponse'; document.head.appendChild(script); ``` 在这个例子中,我们创建了一个`&lt;script&gt;`标签,并将其`src`设置为百度自动补全的API URL,其中...

    实现百度效果 自动显示数据库中的数据

    实现百度效果 自动显示数据库中的数据,主要代码如下: &lt;script type='text/javascript' src='/excelDemo/dwr/interface/jshow.js'&gt;&lt;/script&gt; &lt;script type='text/javascript' src='/excelDemo/dwr/engine.js'&gt;...

    仿百度、google的智能提示

    标题"仿百度、google的智能提示"指的是实现类似百度或Google搜索引擎在用户输入时自动提供搜索建议的功能。这种功能通常被称为自动补全或智能提示,能够提高用户搜索效率,减少输入错误。 描述中提到,这个功能是...

    ajax仿百度搜索输入自动提示

    在项目中,"Suggest"可能是包含实现这个功能的相关文件夹或文件,可能包含了JSP文件、JavaScript文件、CSS文件和可能的数据库配置文件等。具体实现细节可能包括JSP中SQL查询语句的编写,JavaScript中Ajax请求的构造...

    php+ajax仿造百度搜索效果

    在IT行业中,构建一个类似于百度搜索的交互式搜索功能是一项常见的需求,这通常涉及到前端的JavaScript(特别是Ajax)技术和后端的PHP编程。本项目"php+ajax仿造百度搜索效果"旨在通过这两种技术实现一个实时、无...

    类似百度的自动匹配下拉控件

    def suggest(request): keyword = request.GET.get('keyword') suggestions = SearchKeyword.objects.filter(keyword__startswith=keyword)[:10] # 获取前10个匹配项 return JsonResponse(list(suggestions....

    vue.js+resource.js模仿百度搜素下拉列表功能

    this.$http.jsonp('https://sug.so.360.cn/suggest', { // 发起jsonp请求到360搜索引擎 params: { // 设置请求参数 word: this.t1 } }).then(function (res) { this.myData = res.data.s; // 处理返回的数据 ...

    ajax实现输入提示(类似百度和Google的输入提示)

    ajax实现输入提示(类似百度和Google的输入提示) 用法非常简单: 1、在jsp页面引入autosuggest.js文件 2、建一个text文本框 3、写js代码: &lt;script&gt; new actb("tb", loadAllMessage("suggest" , ""), null); 4、这...

Global site tag (gtag.js) - Google Analytics