当前位置:Gxlcms > JavaScript > 文本框文本自动补全效果示例分享_jquery

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

时间:2021-07-01 10:21:17 帮助过:17人阅读

代码如下:

/*文本自动补全 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(), "" + Completion_Value.toUpperCase() + "");
ComPletion_Li += "

  • 约" + dr.ComPletion_Count + "条记录
      " + ComPletionName + "
  • ";
    }
    if (ComPletion_Li != "") {
    var Completion_Html = "
      " + ComPletion_Li + "
    ";
    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 });

    人气教程排行