基于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 按回车键相应按钮提交事件
Nov 02 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
Dec 02 Javascript
JS 操作Array数组的方法及属性实例解析
Jan 08 Javascript
js识别不同浏览器基于userAgent做判断
Jul 29 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
javascript基本语法
May 31 Javascript
xmlplus组件设计系列之图标(ICON)(1)
May 05 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
小程序识别身份证,银行卡,营业执照,驾照的实现
Nov 05 Javascript
JS window对象简单操作完整示例
Jan 14 Javascript
AJAX检测用户名是否存在的方法
Mar 24 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
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
高中学生期末评语
2014/04/25 职场文书
大学生简历求职信
2014/06/24 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
大学生实训报告总结
2014/11/05 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
十七岁的单车观后感
2015/06/12 职场文书
运动会致辞稿
2015/07/29 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书