基于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 相关文章推荐
利用Ext Js生成动态树实例代码
Sep 08 Javascript
完美解决IE低版本不支持call与apply的问题
Dec 05 Javascript
js 获取input点选按钮的值的方法
Apr 14 Javascript
javascript实现俄罗斯方块游戏的思路和方法
Apr 27 Javascript
js实现精美的银灰色竖排折叠菜单
May 16 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
Jan 18 Javascript
原生JS获取元素集合的子元素宽度实例
Dec 14 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
Mar 15 Javascript
vue数据传递--我有特殊的实现技巧
Mar 20 Javascript
vue better scroll 无法滚动的解决方法
Jun 07 Javascript
浅谈Angular7 项目开发总结
Dec 19 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 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 登录记住密码实现思路
2013/05/07 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
php生成微信红包数组的方法
2019/09/05 PHP
laravel请求参数校验方法
2019/10/10 PHP
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
js DataSet数据源处理代码
2010/03/29 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
python求众数问题实例
2014/09/26 Python
独特的python循环语句
2016/11/20 Python
django文档学习之applications使用详解
2018/01/29 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
您的网上新华书店:文轩网
2016/08/24 全球购物
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
商务英语专业应届毕业生求职信
2013/10/28 职场文书
网上蛋糕店创业计划书
2014/01/24 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
医校毕业生自我鉴定
2014/01/25 职场文书
《识字五》教学反思
2014/03/01 职场文书
养牛场项目建议书
2014/05/13 职场文书
代领毕业证委托书
2014/08/02 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
同事欢送会致辞
2015/07/31 职场文书
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle
python分分钟绘制精美地图海报
2022/02/15 Python
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL