基于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 相关文章推荐
在IE模态窗口中自由查看HTML源码的方法
Mar 08 Javascript
JavaScript 检测浏览器和操作系统的脚本
Dec 26 Javascript
JavaScript 实现模态对话框 源代码大全
May 02 Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 Javascript
解决vue 项目引入字体图标报错、不显示等问题
Sep 01 Javascript
浅析微信扫码登录原理(小结)
Oct 29 Javascript
webpack 从指定入口文件中提取公共文件的方法
Nov 13 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
Aug 29 Javascript
vue 封装面包屑组件教程
Nov 16 Javascript
js 数据类型判断的方法
Dec 03 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
Jan 28 Javascript
js中Object.create实例用法详解
Oct 05 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 Ctemplate引擎开发相关内容
2012/03/03 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
Javascript 类型转换方法
2010/10/24 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
python单元测试unittest实例详解
2015/05/11 Python
详细介绍Python的鸭子类型
2016/09/12 Python
python使用正则表达式替换匹配成功的组
2017/11/17 Python
Python3标准库总结
2019/02/19 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
工厂仓管员岗位职责
2014/01/01 职场文书
质检部经理岗位职责
2014/02/19 职场文书
超市促销活动方案
2014/03/05 职场文书
家长给学校的建议书
2014/05/15 职场文书
个人收入证明模板
2014/09/18 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
本科毕业论文致谢怎么写
2015/05/14 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书