基于jquery实现的自动补全功能


Posted in Javascript onMarch 12, 2015

本文实例讲述了基于jquery实现的自动补全功能的方法。分享给大家供大家参考。具体实现方法如下:

$(function() {

    // 自动补全

    var maxcount = 0;// 表示他最大的值

    var thisCount =0;// 初始化他框的位置

    $("body").prepend("<div style='width:120px; display:none; background:#FFFFFF; position: absolute;' id='autoTxt'></div>");

    $("#sele").keyup(function(even) {

        var v = even.which;

        if (v == 38 || v == 40 || v == 13)// 当点击上下键或者确定键时阻止他传送数据

            {

            return;

            }

        var txt = $("#sele").val();//这里是取得他的输入框的值

        if (txt != "") {

            //拼装数据

            $.ajax({

                url : "Birthday_autoCompletion",//从后台取得json数据

                type : "post",

                dataType : "json",

                data : {"bir.userName" : txt

                },

                success : function(ls) {

                    var offset = $("#sele").offset();

                    $("#autoTxt").show();

                    $("#autoTxt").css("top", (offset.top + 30) + "px");

                    $("#autoTxt").css("left", offset.left + "px");

                    var Candidate = "";

                     maxcount = 0;//再重新得值

                    $.each(ls, function(k, v) {

                        Candidate += "<li id='" +maxcount+ "'>" + v + "</li>";

                        maxcount++;

                    });

                    $("#autoTxt").html(Candidate);

                    $("#autoTxt li:eq(0)").css("background", "#A8A5A5");

                    //高亮对象

                    $('body').highLight();

                    $('body').highLight($("#sele").val());

                    event.preventDefault();

                        //当单击某个LI时反映

                        $("#autoTxt li").click(function(){

                            $("#sele").val($("#autoTxt li:eq("+this.id+")").text());

                            $("#autoTxt").html("");

                            $("#autoTxt").hide();

                        });

                        //移动对象

                        $("#autoTxt li").hover(function(){

                            $("#autoTxt li").css("background", "#FFFFFF");

                            $("#autoTxt li:eq("+this.id+")").css("background", "#A8A5A5");

                            thisCount=this.id;},function(){

                                $("#autoTxt li").css("background", "#FFFFFF");});

                },

                error : function() {

                    $("#autoTxt").html("");

                    $("#autoTxt").hide();

                    maxcount = 0;

                }

            });

        } else {

            $("#autoTxt").hide();

            maxcount = 0;

            $("#sestart").click();

        }

    });

    //当单击BODY时则隐藏搜索值

    $("body").click(function(){

        $("#autoTxt").html("");

        $("#autoTxt").hide();

        thisCount=0;

    });

    // 写移动事件//上键38 下键40 确定键 13

    $("body").keyup(function(even) {

        var v = even.which;

            if (v == 38)// 按上键时

            {

                if(thisCount!=0){//等于零时则证明不能上了。所以获得焦点

                    $("#sele").blur();

                    if(thisCount>0)

                        --thisCount;

                    else

                        thisCount=0;

                $("#autoTxt li").css("background", "#FFFFFF");

                $("#autoTxt li:eq("+thisCount+")").css("background", "#A8A5A5");

                }else{$("#sele").focus();}

            } else if (v == 40) {// 按下键时

                if(thisCount<maxcount-1)

                {

                    $("#sele").blur();

                    ++thisCount;

                    $("#autoTxt li").css("background", "#FFFFFF");

                    $("#autoTxt li:eq("+thisCount+")").css("background", "#A8A5A5");

                }

            } else if (v == 13) {// 按确认键时

                var tt=$("#"+thisCount).text();

                if(tt!="")

                    {

                        $("#sele").val(tt);

                        $("#autoTxt").html("");

                        $("#autoTxt").hide();

                    }else

                    {

                        if($("#sele").val()!="")

                        $("#sestart").click();

                    }

            } else {

                if($("#autoTxt").html()!="")

                    {

                        $("#sele").focus();

                        thisCount=0;

                    }

            }

    });

});

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
js实现ASP分页函数 HTML分页函数
Sep 22 Javascript
javascript  Error 对象 错误处理
May 18 Javascript
jQuery随机切换图片的小例子
Apr 18 Javascript
String.prototype实现的一些javascript函数介绍
Nov 22 Javascript
jQuery异步验证用户名是否存在示例代码
May 21 Javascript
JavaScript实现删除,移动和复制文件的方法
Aug 05 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
Dec 16 Javascript
JQuery实现的按钮倒计时效果
Dec 23 Javascript
js判断鼠标位置是否在某个div中的方法
Feb 26 Javascript
JavaScript判断数组是否存在key的简单实例
Aug 03 Javascript
js仿新浪微博消息发布功能
Feb 17 Javascript
javascript如何用递归写一个简单的树形结构示例
Sep 06 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
Mar 12 #Javascript
window.open()实现post传递参数
Mar 12 #Javascript
js运动动画的八个知识点
Mar 12 #Javascript
js实现最短的XML格式化工具实例
Mar 12 #Javascript
微信中一些常用的js方法汇总
Mar 12 #Javascript
javascript实现checkBox的全选,反选与赋值
Mar 12 #Javascript
jQuery通过扩展实现抖动效果的方法
Mar 11 #Javascript
You might like
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
php 中文处理函数集合
2008/08/27 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
php发送与接收流文件的方法
2015/02/11 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
微信小程序表单弹窗实例
2018/07/19 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
Python算法应用实战之队列详解
2017/02/04 Python
python记录程序运行时间的三种方法
2017/07/14 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
python实现员工管理系统
2018/01/11 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
一个C/C++编程面试题
2013/11/10 面试题
linux面试相关问题
2013/04/28 面试题
园林毕业生自我鉴定范文
2013/12/29 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
火锅店的活动方案
2014/08/15 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang