文本框文本自动补全效果示例分享
文本框文本自动补全效果示例分享
发布时间:2016-12-30 来源:查字典编辑
摘要:复制代码代码如下:/*文本自动补全zhouxiang*/(function($){$.Completion=function(setting...

复制代码 代码如下:

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

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

}

if (ComPletion_Li != "") {

var Completion_Html = "<ul>" + 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 });

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类