亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP + ajax實現輸入框自動補全功能 實例代碼

2020-07-27 21:37:19
字體:
來源:轉載
供稿:網友

下面是我用ajax實現的輸入框自動補全功能,數據庫數據很少,大體模仿出了百度首頁的提示功能,當然,人家百度的東西不只是這么簡單的!先看運行效果:

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

復制代碼 代碼如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 

<% 

    String path = request.getContextPath(); 

    String basePath = request.getScheme() + "://"

            + request.getServerName() + ":" + request.getServerPort() 

            + path + "/"; 

%> 

  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<title>查找</title> 

<script type="text/javascript"> 

    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 += '<li style="padding:0 5px;line-height:20px;cursor:default;" onmouseover="'

                        + _this.oo 

                        + '.ChangeOn(this);'

                        + _this.oo 

                        + '.SelIndex='

                        + i 

                        + ';" onmousedown="'

                        + _this.oo 

                        + '.Select();">'

                        + _this.ReData[i] 

                                .replace( 

                                        cRegEx, 

                                        function(s) { 

                                            return '<span style="background:#ff9;font-weight:bold;font-style:normal;color:#e60;">'

                                                    + s + '</span>'; 

                                        }); 

                +'</li>'; 

            } 

            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; 

            } 

        } 

    } 

</script> 

</head> 

<body> 

    <form name="salefrm" method="post" action="result.jsp"> 

        <input type="text" onfocus="loadXMLDoc(this.value)" name="name" id="abc" size="40" /> 

        <input type="submit" value="搜索" /> 

    </form> 

    <script type="text/javascript"> 

  

    //建立實例,第一個參數是實例對象的名稱,第二個是最多顯示的數量 

    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')); 

    </script> 

</body> 

</html>

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:圖省勁嘛)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲男人天天操| 国产一区二区久久精品| 亚洲成色777777女色窝| 精品日本美女福利在线观看| 久久久999精品免费| 国产精品自拍小视频| 91av在线免费观看| 亚洲aⅴ日韩av电影在线观看| 91精品视频免费| 国产精品黄页免费高清在线观看| 亚洲欧美在线第一页| 欧美一级在线亚洲天堂| 亚洲午夜女主播在线直播| 久久久久久成人精品| 国产精品男人爽免费视频1| 亚洲欧洲国产精品| 懂色aⅴ精品一区二区三区蜜月| 日韩一区av在线| 亚洲综合色激情五月| 国内免费久久久久久久久久久| 成人av在线天堂| 国产区精品在线观看| 懂色aⅴ精品一区二区三区蜜月| 国产精品久久久久影院日本| 色综合久久天天综线观看| 欧美在线一区二区三区四| 久久五月情影视| 欧美成人免费va影院高清| 国产精品久久久久av| 亚洲欧美综合精品久久成人| 欧美亚洲一级片| 最新的欧美黄色| 久久影视电视剧免费网站清宫辞电视| 久久人人看视频| 午夜精品一区二区三区在线播放| 国产精品一区二区三区在线播放| 九九热r在线视频精品| 麻豆国产va免费精品高清在线| 91精品一区二区| 丁香五六月婷婷久久激情| 欧美亚洲日本黄色| 亚洲一二在线观看| 欧美日韩成人精品| 欧美日韩国产一中文字不卡| 亚洲激情在线视频| 91精品国产91久久久久久最新| 欧美一级电影在线| 欧美大成色www永久网站婷| 国内精品久久久久久久久| 亚洲国产中文字幕久久网| 国产区精品视频| 亚洲综合第一页| 国产中文字幕亚洲| 97精品在线观看| 成人激情在线观看| 日韩视频免费大全中文字幕| 亚洲综合精品伊人久久| 国产视频丨精品|在线观看| 日韩国产激情在线| 日韩一级裸体免费视频| 欧美性xxxx| 日韩电影视频免费| 欧美大片网站在线观看| 中文字幕在线观看日韩| 久久久久国产一区二区三区| 国产精品成人免费视频| 一区二区在线视频播放| 国产亚洲福利一区| 国产精品美女久久久免费| 亚洲欧美日韩另类| 一道本无吗dⅴd在线播放一区| 欧美超级免费视 在线| 亚洲xxxx妇黄裸体| 亚洲欧美日韩中文视频| 91国语精品自产拍在线观看性色| 国模视频一区二区| 日本在线观看天堂男亚洲| 欧美午夜精品久久久久久浪潮| 成人妇女免费播放久久久| 亚洲最大福利视频| 亚洲一区二区三区乱码aⅴ| 成人黄色在线免费| 一道本无吗dⅴd在线播放一区| 91探花福利精品国产自产在线| 全球成人中文在线| 欧美激情综合亚洲一二区| 国产欧美一区二区三区在线看| 不卡在线观看电视剧完整版| 黄色91在线观看| 国产亚洲精品一区二区| 日韩成人激情视频| 亚洲欧美一区二区三区在线| 国产亚洲精品久久久久久777| 亚洲黄色www网站| 欧美富婆性猛交| 日韩成人av一区| 97精品视频在线| 国产成人一区三区| 亚洲精品www久久久久久广东| 91黄色8090| 久久久久久噜噜噜久久久精品| 久久手机精品视频| 国产成+人+综合+亚洲欧美丁香花| 久久免费视频在线观看| 国产精品91久久久久久| 成人黄色av网站| 久久精品99久久久香蕉| 97在线观看免费| 国产在线精品播放| 中文字幕日韩精品在线观看| 亚洲第五色综合网| 欧美精品www| 亚洲国产精品免费| 国产高清在线不卡| 亚洲精品乱码久久久久久金桔影视| 欧美视频中文字幕在线| 久久久久日韩精品久久久男男| 久久久在线观看| 91丨九色丨国产在线| 伊人一区二区三区久久精品| 欧美裸体xxxx| 懂色aⅴ精品一区二区三区蜜月| 亚洲精品99999| 日韩av手机在线| 国产盗摄xxxx视频xxx69| 亚洲人成在线观看网站高清| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲国内精品在线| 日韩精品亚洲精品| 久久手机免费视频| 精品视频中文字幕| 亚洲xxx自由成熟| 国产精品美女主播在线观看纯欲| 色琪琪综合男人的天堂aⅴ视频| 啊v视频在线一区二区三区| 久热精品视频在线观看| 中文字幕在线亚洲| 精品福利一区二区| 欧美在线观看网址综合| 亚洲精品一区二区三区婷婷月| 日韩网站免费观看高清| 日韩精品日韩在线观看| 亚洲一区精品电影| 免费成人高清视频| 欧美福利视频在线| 日韩经典第一页| 欧美精品国产精品日韩精品| 国内精品视频一区| 亚洲综合av影视| 国产一区二区三区欧美| 日韩成人av网址| 精品动漫一区二区三区| 国产亚洲精品综合一区91| 欧美最猛性xxxx| 国产精品欧美一区二区| 日韩色av导航| 久久精品国产亚洲7777| 91色中文字幕| 久久躁狠狠躁夜夜爽| 欧美日韩精品二区| 日本a级片电影一区二区| 中文日韩电影网站| 精品视频久久久久久| 精品国产一区二区三区久久久|