当前位置:  编程技术>java/j2ee

JSP + ajax实现输入框自动补全功能 实例代码

    来源: 互联网  发布时间:2014-10-18

    本文导语:  下面是我用ajax实现的输入框自动补全功能,数据库数据很少,大体模仿出了百度首页的提示功能,当然,人家百度的东西不只是这么简单的!先看运行效果: index.jsp(包含主要的js代码) 代码如下:             查找  ...

下面是我用ajax实现的输入框自动补全功能,数据库数据很少,大体模仿出了百度首页的提示功能,当然,人家百度的东西不只是这么简单的!先看运行效果:

index.jsp(包含主要的js代码)

代码如下:

 

 

  

 

 

 

查找 

 

    function mSift_SeekTp(oObj, nDire) { 

        var nPosition = null; 

        if (oObj.getBoundingClientRect && !document.all) { 

            var oDc = document.documentElement; 

            switch (nDire) { 

            case 0: 

                return oObj.getBoundingClientRect().top + oDc.scrollTop; 

            case 1: 

                return oObj.getBoundingClientRect().right + oDc.scrollLeft; 

            case 2: 

                return oObj.getBoundingClientRect().bottom + oDc.scrollTop; 

            case 3: 

                return oObj.getBoundingClientRect().left + oDc.scrollLeft; 

            } 

        } else { 

            if (nDire == 1 || nDire == 3) { 

                nPosition = oObj.offsetLeft; 

            } else { 

                nPosition = oObj.offsetTop; 

            } 

            if (arguments[arguments.length - 1] != 0) { 

                if (nDire == 1) { 

                    nPosition += oObj.offsetWidth; 

                } else if (nDire == 2) { 

                    nPosition += oObj.offsetHeight; 

                } 

            } 

            if (oObj.offsetParent != null) { 

                nPosition += mSift_SeekTp(oObj.offsetParent, nDire, 0); 

            } 

            return nPosition; 

        } 

    } 

    function mSift(cVarName, nMax) { 

        this.oo = cVarName; 

        this.Max = nMax; 

    } 

    mSift.prototype = { 

        Varsion : 'v2010.10.29 by AngusYoung | mrxcool.com', 

        Target : Object, 

        TgList : Object, 

        Listeners : null, 

        SelIndex : 0, 

        Data : [], 

        ReData : [], 

        Create : function(oObj) { 

            var _this = this; 

            var oUL = document.createElement('ul'); 

            oUL.style.display = 'none'; 

            oObj.parentNode.insertBefore(oUL, oObj); 

            _this.TgList = oUL; 

            oObj.onkeydown = oObj.onclick = function(e) { 

                _this.Listen(this, e); 

            }; 

            oObj.onblur = function() { 

                setTimeout(function() { 

                    _this.Clear(); 

                }, 100); 

            }; 

        }, 

        Complete : function() { 

        }, 

        Select : function() { 

            var _this = this; 

            if (_this.ReData.length > 0) { 

                _this.Target.value = _this.ReData[_this.SelIndex].replace( 

                        /*/g, '*').replace(/|/g, '|'); 

                _this.Clear(); 

            } 

            setTimeout(function() { 

                _this.Target.focus(); 

            }, 10); 

            _this.Complete(); 

        }, 

        Listen : function(oObj) { 

            var _this = this; 

            _this.Target = oObj; 

            var e = arguments[arguments.length - 1]; 

            var ev = window.event || e; 

            switch (ev.keyCode) { 

            case 9://TAB 

                return; 

            case 13://ENTER 

                _this.Target.blur(); 

                _this.Select(); 

                return; 

            case 38://UP 

                _this.SelIndex = _this.SelIndex > 0 ? _this.SelIndex - 1 

                        : _this.ReData.length - 1; 

                break; 

            case 40://DOWN 

                _this.SelIndex = _this.SelIndex < _this.ReData.length - 1 ? _this.SelIndex + 1 

                        : 0; 

                break; 

            default: 

                _this.SelIndex = 0; 

            } 

            if (_this.Listeners) { 

                clearInterval(_this.Listeners); 

            } 

            _this.Listeners = setInterval(function() { 

                _this.Get(); 

            }, 10); 

        }, 

        Get : function() { 

            var _this = this; 

            if (_this.Target.value == '') { 

                _this.Clear(); 

                return; 

            } 

            if (_this.Listeners) { 

                clearInterval(_this.Listeners); 

            } 

            ; 

            _this.ReData = []; 

            var cResult = ''; 

            for ( var i = 0; i < _this.Data.length; i++) { 

                if (_this.Data[i].toLowerCase().indexOf( 

                        _this.Target.value.toLowerCase()) >= 0) { 

                    _this.ReData.push(_this.Data[i]); 

                    if (_this.ReData.length == _this.Max) { 

                        break; 

                    } 

                } 

            } 

            var cRegPattern = _this.Target.value.replace(/*/g, '*'); 

            cRegPattern = cRegPattern.replace(/|/g, '|'); 

            cRegPattern = cRegPattern.replace(/+/g, '\+'); 

            cRegPattern = cRegPattern.replace(/./g, '\.'); 

            cRegPattern = cRegPattern.replace(/?/g, '\?'); 

            cRegPattern = cRegPattern.replace(/^/g, '\^'); 

            cRegPattern = cRegPattern.replace(/$/g, '\$'); 

            cRegPattern = cRegPattern.replace(/(/g, '\('); 

            cRegPattern = cRegPattern.replace(/)/g, '\)'); 

            cRegPattern = cRegPattern.replace(/[/g, '\['); 

            cRegPattern = cRegPattern.replace(/]/g, '\]'); 

            cRegPattern = cRegPattern.replace(/\/g, '\\'); 

            var cRegEx = new RegExp(cRegPattern, 'i'); 

            for ( var i = 0; i < _this.ReData.length; i++) { 

                if (_this.Target.value.indexOf('*') >= 0) { 

                    _this.ReData[i] = _this.ReData[i].replace(/*/g, '*'); 

                } 

                if (_this.Target.value.indexOf('|') >= 0) { 

                    _this.ReData[i] = _this.ReData[i].replace(/|/g, '|'); 

                } 

                cResult += '

  • '

                            + _this.ReData[i] 

                                    .replace( 

                                            cRegEx, 

                                            function(s) { 

                                                return ''

                                                        + s + ''; 

                                            }); 

                    +'

  • '; 

                } 

                if (cResult == '') { 

                    _this.Clear(); 

                } else { 

                    _this.TgList.innerHTML = cResult; 

                    _this.TgList.style.cssText = 'display:block;position:absolute;background:#fff;border:#090 solid 1px;margin:-1px 0 0;padding: 5px;list-style:none;font-size:12px;'; 

                    _this.TgList.style.top = mSift_SeekTp(_this.Target, 2) + 'px'; 

                    _this.TgList.style.left = mSift_SeekTp(_this.Target, 3) + 'px'; 

                    _this.TgList.style.width = _this.Target.offsetWidth - 12 + 'px'; 

                } 

                var oLi = _this.TgList.getElementsByTagName('li'); 

                if (oLi.length > 0) { 

                    oLi[_this.SelIndex].style.cssText = 'background:#36c;padding:0 5px;line-height:20px;cursor:default;color:#fff;'; 

                } 

            }, 

            ChangeOn : function(oObj) { 

                var oLi = this.TgList.getElementsByTagName('li'); 

                for ( var i = 0; i < oLi.length; i++) { 

                    oLi[i].style.cssText = 'padding:0 5px;line-height:20px;cursor:default;'; 

                } 

                oObj.style.cssText = 'background:#36c;padding:0 5px;line-height:20px;cursor:default;color:#fff;'; 

            }, 

            Clear : function() { 

                var _this = this; 

                if (_this.TgList) { 

                    _this.TgList.style.display = 'none'; 

                    _this.ReData = []; 

                    _this.SelIndex = 0; 

                } 

            } 

        } 

     

     

     

         

             

             

         

         

      

        //建立实例,第一个参数是实例对象的名称,第二个是最多显示的数量 

        var oo = new mSift('oo', 20); 

        //获取数据 

        function loadXMLDoc(str) { 

            var xmlhttp; 

            if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 

                xmlhttp = new XMLHttpRequest(); 

            } else {// code for IE6, IE5 

                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 

            } 

            xmlhttp.onreadystatechange = function() { 

                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 

                    oo.Data = xmlhttp.responseText.split("|"); 

                } 

            }; 

            xmlhttp.open("GET", "AjaxServlet?name="+str, true); 

            xmlhttp.send(); 

        } 

      

            //指定文本框对象建立特效 

            oo.Create(document.getElementById('abc')); 

         

     

    AjaxServlet.java

    代码如下:

    public void doGet(HttpServletRequest request, HttpServletResponse response) 

            throws ServletException, IOException { 

        response.setContentType("text/xml; charset=utf-8"); 

        PrintWriter out = response.getWriter(); 

        String str = newsDao.findAllNewsType(); 

        out.println(str); 

    }

    以上就是主要代码,数据库查询后返回的是以"|"分割连接的字符串组合(PS:图省劲嘛)。


        
     
     

    您可能感兴趣的文章:

  • ******"Servlet根据JSP视图的需求生成JavaBeans的实例并输出给JSP环境"如何实现上面这句话的效果??*******
  • jsp实例??
  • 如何向JSP中传送Sevrlet的实例?
  • 请问那有《UltraDev 4 JSP/XML 高级实例教程》下载?
  • 系统参数???and后台管理实例???and JSP???
  • JSP 重置按钮清空传入的表单数据实例
  • 在JSP中如何实例化构造函数有参数的JavaBean?
  • jsp重定向地址栏不改变的实例
  • JSP读取文件实例
  • jsp源码实例1(输出)
  • jsp源码实例3(获取jsp各种参数)
  • jsp源码实例4(搜索引擎)
  • jsp源码实例2(获取表单参数)
  • JSP forward用法分析实例代码分析
  • jsp中使用javabean实例介绍
  • jsp源码实例5(cookie)
  • JSP 自定义标签之一 简单实例
  • JSP发送邮件实例
  • 基于JSP 自定义标签使用实例介绍
  • 如何输出org.jdom.Document实例到JSP页面上?
  • 现有1.jsp、2.jsp、3.jsp三个文件,我怎么在3.jsp文件中得到1.jsp中输入的值?
  • 菜鸟做了一个输入用户名和密码登陆的jsp,登陆成功一次以后,每次输入用户名,密码会自动产生,太不安全了,怎么让这种事情不再发生??
  • 输入http://localhost:8080显示欢迎页面但无法显示JSP页面
  • 在jsp输入中文->servlet->Session Bean->EntityBean->Oracle就变成一堆?????号。
  • JSP里面,当我在简体下输入繁体后,不能够正常显示,但是在繁体下输入繁体则可以正常显示,整个系统是繁体!!哪位救救我
  • 请问: 怎么把jsp中用户的输入做为参数传递给shell script?!!!!!!!!
  • 我的JSP为什么输入的是乱码?
  • 有一问:如何在JSP中输入中文
  • 请问怎样用jsp限制用户只能输入数字,另,怎样用jsp验证邮件格式是否正确?
  • 想请教一下在jsp下批量输入数据的方法,哪位有比较好的想法
  • jsp中是否能实现输入验证
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • JSP中清空cookie代码参考
  • ?100分求jsp树的原代码 最好是jsp+js+xml 执行效率要高。(从数据库中动态生成的)(散分)
  • 100分求jsp树的原代码 最好是jsp+js+xml 执行效率要高。(从数据库中动态生成的)在线
  • 求jsp树的原代码,一定要是jsp+js+xml 执行效率要高。(从数据库中动态生成的)
  • 本机如何调试jsp代码?
  • jsp留言板源代码一: 给jsp初学者.
  • JSP中实现系统登录后的退出原理及代码
  • 请教在JSP里使用EJB的简洁并完整例子的JSP和EJB代码,谢谢!
  • jsp include引用非本级目录网页实现代码
  • 在JSP代码中怎么引用javascript中的变量???急!!!
  • JSP一句话木马代码
  • 400分寻求有较好学习价值的JSP源代码!
  • 怎样利用JAVABEAN将JSP页面提交的数据保存到数据库,请给代码好吗?谢谢!
  • 50分!两个简单问题。.jsp文件中可以插入javascript代码吗?是否可以通过某框架中链接的target属性将.jsp文件在另一框架中显示?
  • jsp里的代码为什么找不到同一目录下的文件(tomcat上)
  • 有jsp的upload和download 代码么,高分相报!
  • 在制作的留言簿上提交jsp的源代码的问题,
  • JAVA APPLET与JSP有什么区别?好像都是把JAVA代码嵌到网页中。
  • 求jsp树的原代码,一定要是jsp+js+xml 执行效率要高。(从数据库中动态生成的) iis7站长之家
  • 100分求 《JSP技术大全》一书源代码
  • 请推荐JSP论坛代码
  • 一个框界网爷包含上下两个网页a1.jsp和a2.jsp,怎么实现a1.jsp自身不变且提交数据到下面的a2.jsp呢?不胜感激,急..
  • 请问jsp和serlet之间怎么通讯,jsp和jsp之间呢?
  • 请问<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别
  • response.sendRedirect("index.jsp") 和 <jsp:forward page="index.jsp"/>的区别?
  • 想把一个jsp转到另一个jsp页面,要穿参数,中文的(jsp变量)。谁教教我?!
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • jsp+bean还是jsp+ejb还是jsp+servlet还是asp+activex好?
  • 谁能告诉我,怎么调试jsp程序呀!我在jsp中调用java,但是Tomcat这家伙只会给我报jsp文件出错。这可怎么办呀?
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?
  • 初学jsp,一个html调用一个jsp,这个jsp调用一个javaBean,已编译成类,最后如何部署(用j2sdkee)?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3