您的位置
主页 > 网站技术 > 语言编程 > » 正文

分享文本框文本自动补全效果示例

来源: 站长圈 点击:

点评:本文主要介绍了jquery实现文本框的文本自动补全效果,感兴趣的朋友可以参考一下,希望对大家有所帮助!

复制代码 代码如下:

/*文本自动补全 zhouxiang*/

(function ($) {

    $.Completion = function (setting) {

        var opts = $.extend({}, $.Completion.DefaultSetting, setting);

        //宽度

        var Completion_Width = null;

        //高度

        var Completion_Height = null;

        //数据源(ashx)访问路径

        var Completion_Data_Url = null;

        //对象

        var Completion_Obj = null;

        var Completion_Obj_Show = null;

        //对象距离左边距

        var Completion_Obj_MarginLeft = null;

        //对象距离上边距

        var Completion_Obj_MarginTop = null;

        //对象高度

        var Completion_Obj_Height = null;

        //分类

        var Completion_Count = null;

        //

        var Completion_Type_obj = null;

        //内容

        var Completion_Value = null;

        //类型

        var Completion_Type = null;

        //是否传入类型

        var Completion_Bool = false;

        //计数

        var Completion_N = 0;

        //回车回调

        var Completion_ClickCall = null;

        //加载

        function Completion_Loading() {

            //初始化

            Init();

            //绑定事件

            Completion_Obj_AddEvent();

        }

        //初始化

        function Init() {

            Completion_Obj_Show = opts.Completion_Obj_Show;

            //获取对象

            Completion_Obj = opts.Completion_Obj;

            //获取对象宽度

            Completion_Width = Completion_Obj.width();

            //获取层显示高度

            Completion_Height = opts.Completion_Height;

            //获取访问数据库URL

            Completion_Data_Url = opts.Completion_Data_Url;

            //每次查询多少条记录

            Completion_Count = opts.Completion_Count;

            //获取对象高度

            Completion_Obj_Height = Completion_Obj.height();

            //获取左边距

            Completion_Obj_MarginLeft = Completion_Obj.offset().left;

            //获取上边距

            Completion_Obj_MarginTop = parseInt(Completion_Obj.offset().top) + parseInt(Completion_Obj_Height);

            Completion_Type_obj = opts.Completion_Type_obj;

            Completion_Bool = opts.Completion_Bool;

            Completion_ClickCall = opts.Completion_ClickCall;

        }

        //给对象添加事件

        function Completion_Obj_AddEvent() {

            Completion_Obj.keyup(function (event) {

                switch (event.keyCode) {

                    case 38:

                        break;

                    case 40:

                        break;

                    case 13:

                        Completion_ClickCall();

                        break;

                    default:

                        //按键事件 延迟操作

 

                        Cimpletion_Bind();

                        break;

                }

            });

            Completion_Obj.keydown(function (event) {

                switch (event.keyCode) {

                    case 13:

                        break;

                    case 38:

                        if (Completion_N == 0) {

                            Completion_N = (Completion_Obj_Show.find("li").length - 1);

                        } else if (Completion_N != 0) {

                            Completion_N = Completion_N - 1;

                        }

                        //alert(Completion_N);

                        Completion_Obj_Show.find("li").find("a").removeClass("Completion-guess-list-hover");

                        Completion_Obj_Show.find("li").eq(Completion_N).find("a").addClass("Completion-guess-list-hover");

                        Completion_Obj.val(Completion_Obj_Show.find("li").eq(Completion_N).find("ul").text());

                        break;

                    case 40:

                        if (Completion_N + 1 < Completion_Obj_Show.find("li").length) {

                            Completion_N = Completion_N + 1;

                        } else if (Completion_N + 1 == Completion_Obj_Show.find("li").length) {

                            Completion_N = 0;

                        }

                        Completion_Obj_Show.find("li").find("a").removeClass("Completion-guess-list-hover");

                        Completion_Obj.val(Completion_Obj_Show.find("li").eq(Completion_N).find("ul").text());

                        Completion_Obj_Show.find("li").eq(Completion_N).find("a").addClass("Completion-guess-list-hover");

                        break;

                    default:

                        break;

                }

            });

        }

        //绑定方法

        function Cimpletion_Bind() {

            //是否开启类型判断

            if (Completion_Bool) {

                Completion_Type = Completion_Type_obj.val();

            }

            Completion_Value = Completion_Obj.val();

            Completion_Value = Completion_Value.replace(" ", "");

            //执行验证

            Completion_Verification(Completion_Value);

            if (Completion_Value.length > 1) {

                //得到数据 构造HTML

                Completion_Data_Bind();

            } else {

                Completion_Obj_Show.hide();

            }

        }

        //验证

        function Completion_Verification(obj) {

            if (obj == "" || obj == null || obj == undefined) {

                return false;

            }

        }

        //执行AJAX请求 得到数据

        function Completion_Data_Bind() {

            $.ajax({

                url: Completion_Data_Url,

                data: { CompletionValue: Completion_Value, CompletionCount: Completion_Count, CompletionType: Completion_Type },

                type: "post",

                dataType: "json",

                success: function (obj) {

                    //构造HTML

                    Completion_Add_Html(obj);

                }

            });

        }

        //选中

        function Completion_Selected(obj) {

            Completion_Obj.val(obj.find("ul").text());

            Completion_Obj_Show.hide();

        }

        //构造内容

        function Completion_Add_Html(obj) {

            var data = obj.Completion_Data;

            //执行验证

            Completion_Verification(data);

            var ComPletion_Li = "";

            if (data != null && data != undefined) {

                for (var i = 0; i < data.length; i++) {

                    //执行验证是否为空

                    var dr = data[i];

                    Completion_Verification(dr);

                    var ComPletionName = dr.ComPletion_Name;

                    ComPletionName = ComPletionName.replace(Completion_Value.toUpperCase(), "<span class='c-hover'>" + Completion_Value.toUpperCase() + "</span>");

                    ComPletion_Li += "<li><a href='javascript:;'><span class='c-total'>约" + dr.ComPletion_Count + "条记录</span><ul>" + ComPletionName + "</ul></a></li>";

                }

                if (ComPletion_Li != "") {

                    var Completion_Html = "<ul style='list-style-type:none;'>" + ComPletion_Li + "</ul>";

                    Completion_Obj_Html(Completion_Html);

                } else {

                    Completion_Obj_Show.hide();

                }

            }

        }

        //mouse

        function MouseHover(obj) {

            Completion_Obj_Show.find("li").mouseover(function () {

                Completion_Obj_Show.find("li").find("a").removeClass("Completion-guess-list-hover");

                Completion_Obj.val($(this).find("ul").text());

                Completion_N = Completion_Obj_Show.find("li").index(this);

            });

        }

        //绑定到控件

        function Completion_Obj_Html(html) {

            Completion_Obj_Show.show();

            Completion_Obj_Show.html("")

            Completion_Obj_Show.css({ "width": Completion_Width + 6, "height": Completion_Height, "border-width": "1px", "border-color": "#CCC", "border-top-width": "0px", "border-style": "solid", "position": "relative", "z-index": "100000" });

            Completion_Obj_Show.attr("class", "Completion-guess-list");

            Completion_Obj_Show.html(html);

            Completion_N = -1;

            Completion_Obj_Show.find("li").unbind("click").click(function () {

                Completion_Selected($(this));

            });

            MouseHover($(this));

            Completion_Obj_Show.click(function (e) {

                e.stopPropagation();

            })

            Completion_Obj.click(function (e) {

                Cimpletion_Bind();

                e.stopPropagation();

            });

            $(document).click(function () {

                Completion_Obj_Show.hide();

            });

        }

        //加载

        Completion_Loading();

    };

    //默认配置

    $.Completion.DefaultSetting = {

        Completion_Height: null,

        Completion_Data_Url: null,

        Completion_Obj: null,

        Completion_Obj_Show: null,

        Completion_Bool: false,

        Completion_Count: 10,

        Completion_Type_obj: null,

        Completion_ClickCall: null

    };

})(jQuery);

复制代码 代码如下:

body

{

      margin: 0;

    padding: 0;

    }

.Completion-guess-list ul, li

{

    margin: 0;

    padding: 0;

    list-style:none;

}

.Completion-guess-list

{

    overflow: auto;

    font-size: 12px;

    line-height: 180%;

    background: #fff;

}

.Completion-guess-list a

{

    color: #555;

    text-decoration: none;

    display: block;

    padding: 1px 6px;

    overflow: hidden;

    white-space: nowrap;

    font-family:Verdana,arial;

}

.Completion-guess-list a .c-total{float:right;color:green;}

.Completion-guess-list a:hover,.Completion-guess-list a.Completion-guess-list-hover

{

    background: #3399ff;

    color: #fff;

}

.Completion-guess-list a:hover span.c-total,.Completion-guess-list a.Completion-guess-list-hover span.c-total{color:#fff;}

.Completion-guess-list .c-hover{font-weight:700;}

复制代码 代码如下:

$.Completion({ Completion_Obj: $("#Input_Html"), Completion_Data_Url: "/CompletionHandler.ashx", Completion_Height: "auto", Completion_Obj_Show: $("#show"), Completion_Bool: true, Completion_Type_obj: $("#Type"), Completion_ClickCall: function () { alert(1); }, Completion_Length: 0 });




首页  - 关于站长圈  - 广告服务  - 联系我们  - 关于站长圈  - 网站地图  - 版权声明