基于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 相关文章推荐
javascript 动态加载 css 方法总结
Jul 11 Javascript
jQuery 中使用JSON的实现代码
Dec 01 Javascript
JS上传前预览图片实例
Mar 25 Javascript
javascript学习笔记(四)function函数部分
Sep 30 Javascript
JavaScript实现重置表单(reset)的方法
Apr 02 Javascript
基于jquery实现下拉框美化特效
Feb 02 Javascript
JavaScript:Array类型全面解析
May 19 Javascript
微信小程序开发(一) 微信登录流程详解
Jan 11 Javascript
强大的JavaScript响应式图表Chartist.js的使用
Sep 13 Javascript
vue.js中toast用法及使用toast弹框的实例代码
Aug 27 Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 Javascript
微信小程序生成海报分享朋友圈的实现方法
May 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
php使用ICQ网关发送手机短信
2013/10/30 PHP
php正则表达式学习笔记
2015/11/13 PHP
JavaScript触发器详解
2007/03/10 Javascript
广告切换效果(缓动切换)
2009/05/27 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
python斐波那契数列的计算方法
2018/09/27 Python
Python语言进阶知识点总结
2019/05/28 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Python实现微信好友的数据分析
2019/12/16 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
园长自我鉴定
2013/10/06 职场文书
物业电工岗位职责
2013/11/20 职场文书
门卫工作岗位职责
2013/12/17 职场文书
世界遗产的导游词
2015/02/13 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
Python图片验证码降噪和8邻域降噪
2021/08/30 Python