基于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对象弹出一个层
Mar 26 Javascript
谷歌浏览器 insertCell与appendChild的区别
Feb 12 Javascript
Visual Studio中的jQuery智能提示设置方法
Mar 27 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
Aug 15 Javascript
AngularJS入门教程(一):静态模板
Dec 06 Javascript
JS实现具备延时功能的滑动门菜单效果
Sep 17 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
Nov 02 Javascript
使用JQuery选择HTML遍历函数的方法
Sep 17 Javascript
js实现放大镜特效
May 18 Javascript
vue+element UI实现树形表格带复选框的示例代码
Apr 16 Javascript
解决layui的radio属性或别的属性没显示出来的问题
Sep 26 Javascript
微信小程序实现自定义底部导航
Nov 18 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
PHP实现分页的一个示例
2006/10/09 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[01:46]新英雄登场
2019/09/10 DOTA
Python使用folium excel绘制point
2019/01/03 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
文科生自我鉴定
2014/02/15 职场文书
房产委托公证书
2014/04/08 职场文书
设计大赛策划方案
2014/06/13 职场文书
授权委托书样本
2014/09/25 职场文书
打架检讨书范文
2015/01/27 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
Java8中Stream的一些神操作
2021/11/02 Java/Android
MongoDB支持的数据类型
2022/04/11 MongoDB
Spring中的@Transactional的工作原理
2022/06/05 Java/Android
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS