基于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 相关文章推荐
select组合框option的捕捉实例代码
Sep 30 Javascript
js动画(animate)简单引擎代码示例
Dec 04 Javascript
跟我学习javascript的for循环和for...in循环
Nov 18 Javascript
jQuery操作动态生成的内容的方法
May 28 Javascript
JavaScript自定义文本框光标
Mar 05 Javascript
javascript 开发之百度地图使用到的js函数整理
May 19 Javascript
JavaScript定义函数的三种实现方法
Sep 23 Javascript
jquery实现企业定位式导航效果
Jan 01 jQuery
vue $set 给数据赋值的实例
Nov 09 Javascript
jQuery实现消息弹出框效果
Dec 10 jQuery
Node.js实现批量下载图片简单操作示例
Jan 18 Javascript
js实现烟花特效
Mar 02 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
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
python实现flappy bird小游戏
2018/12/24 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
什么是.net的Remoting技术
2016/07/08 面试题
服装厂厂长职责
2013/12/16 职场文书
跟单文员岗位职责
2014/01/03 职场文书
教师师德反思材料
2014/02/15 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
2015员工年度考核评语
2015/03/25 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
学习雷锋主题班会
2015/08/14 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android