日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【AJAX】AJAX实现搜索信息自己主动推荐并补全

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【AJAX】AJAX实现搜索信息自己主动推荐并补全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? 好久沒有繼續看AJAX的視頻教程了,今天就將最后一個教程案例做完。我們在搜索引擎中輸入文字時文本框下會提示對應的信息,這個案例就是實現這樣的基本功能,代碼比較粗糙還須要進一步完好,當中有些地方也須要向大神們請教一下。完畢效果截圖:


一、事先代碼準備工作:

1.?? JQueryAutoComplete.html負責頁面端的顯示

a)?????截圖例如以下:

b)????代碼例如以下:

<!DOCTYPE html> <html><head><title>自己主動補全演示樣例</title><meta http-equiv="content-type" content="text/html; charset=UTF-8"><script type="text/javascript" src="jslib/jQuery.js"></script> <span style="white-space:pre"> </span><script type="text/javascript" src="jslib/jqueryauto.js"></script><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body>補全演示樣例:<span style="white-space:pre"> </span><input type="text" id="word"/><span style="white-space:pre"> </span><input type="button" value="提交"/><br/><span style="white-space:pre"> </span><div id="auto"></div></body> </html>

c)?????注:頁面端HTML代碼基本上在后面的編寫中不會改變。

2.?? jqueryauto.js負責對頁面元素進行更改

3.?? wordxml.jsp存儲信息推薦的XML數據

a)?????初始代碼例如以下(后期需改動):

<!-- 這個JSP返回的是XML數據,contentType的值是text/xml --> <%@ pagelanguage="java" contentType="text/xml; charset=UTF-8"pageEncoding="utf-8"%> <!-- 返回XML數據,將全部數據都返回,等待后臺能夠完整協作后再限制返回內容 --> <words><word>absolute</word><word>anyone</word><word>anything</word><word>apple</word><word>abandon</word><word>breach</word><word>break</word><word>boolean</word> </words>

4.?? AutoComplete.java后臺Servlet

a)?????初始代碼例如以下(為了簡單起見Servlet不會進行推斷操作。所以后面基本上也不會進行更改):

import java.io.IOException; importjavax.servlet.RequestDispatcher; importjavax.servlet.ServletException; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; /*** @author Ginger* 補全內容后臺代碼*接收用戶請求*/ public class AutoCompleteextends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponseresp)throws ServletException, IOException {String word=req.getParameter("word"); // 將字符串保存在request對象中req.setAttribute("word", word); // 請求轉發到視圖層RequestDispatchertemp=req.getRequestDispatcher("wordxml.jsp");temp.forward(req, resp);}@Overrideprotected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException, IOException {doGet(req, resp);} }

二、接下來我們就對jqueryauto.js進行編寫

代碼的功能能夠依據功能和先后順序分為:

1.?? 設置推薦文字彈出框auto的樣式:

2.?? 設置button的點擊事件:

3.?? 為輸入文本框加入鍵盤事件

a)?????鍵盤事件分對當按下字母鍵、上下鍵、回車鍵時進行處理:

??????????????????????????i.?????????字母鍵:向后臺提交文本框數據

?????????????????????????ii.?????????上下鍵:設置推薦文本被高亮的效果

???????????????????????iii.?????????回車鍵:模擬button被點擊的效果

4.?? 終于代碼

//表示當前高亮的節點 var highlightindex=-1; $(document).ready(function(){ // 依據輸入框設置彈出框的樣式var wordInput=$("#word");var wordInputOffset=wordInput.offset();//隱藏自己主動補全div框$("#auto").hide().css("border","1pxblack solid").css("position","absolute") .css("top",wordInput.height()+wordInputOffset.top+"px").css("left",wordInputOffset.left+"px").width(wordInput.width());// 為文本框加入鍵盤按下并彈起事件$("#word").keyup(function(event){ // 處理文本框中的鍵盤事件 // 假設輸入字母、退格鍵、刪除鍵,則將信息發送到server var myEvent=event || window.event;var keyCode=myEvent.keyCode;if(keyCode>=65&&keyCode<=90 || keyCode==8 ||keyCode==46){// 1.首先獲取文本框內容var wordText=$("#word").val();// 2.將內容發送給server(文本不為空的情況下才發送數據)var autoNode=$("#auto");if(wordText!=""){$.post("AutoComplete",{word:wordText},function(data){// 2.1轉換dom對象為JQuery對象var jqueryObj=$(data);// 2.2找到全部word節點varwordNodes=jqueryObj.find("word");// 2.3遍歷全部word節點。取出單詞內容,加入到auto彈出框中// 每次提交數據前清空補全框數據autoNode.html("");$(wordNodes).each(function(i){// 獲取單詞內容var wordNode=$(this); // 將節點加入到彈出框中 autoNode.append($("<div>").html(wordNode.text()));});if(wordNodes.length >0){autoNode.show();}else{autoNode.hide();} },"xml");}else{autoNode.hide(); // 隱藏彈出框同一時候重置高亮值highlightindex=-1;}}else if(keyCode==38 || keyCode==40){ // 假設輸入上下button,則補全內容會被選中if(keyCode==38){ // 向上 // 找到當前補全框的全部子節點varautoNodes=$("#auto").children("div");if(highlightindex!=-1){ // 假設原來存在高亮節點。則將背景改為白色autoNodes.eq(highlightindex).css("background-color","white").css("color","black");highlightindex--;}else{highlightindex=autoNodes.length-1;}if(highlightindex==-1){ // 假設改動索引值后index變成-1,則將索引值指向最后一個元素highlightindex=autoNodes.length-1;}autoNodes.eq(highlightindex).css("background-color","blue").css("color","white");}if(keyCode==40){ // 向下 // 找到當前補全框的全部子節點varautoNodes=$("#auto").children("div");if(highlightindex!=-1){ // 假設原來存在高亮節點。則將背景改為白色autoNodes.eq(highlightindex).css("background-color","white").css("color","black");}highlightindex++;if(highlightindex==autoNodes.length){ // 假設改動索引值后index變成-1,則將索引值指向最后一個元素highlightindex=0;}autoNodes.eq(highlightindex).css("background-color","blue").css("color","white");} }else if(keyCode==13){// 假設輸入回車// 補全框中有選中內容if(highlightindex!=-1){varautoNodes=$("#auto").children("div");// 將高亮文本賦給輸入框$("#word").val(autoNodes.eq(highlightindex).text());highlightindex=-1;$("#auto").hide();alert("已提交。");}else{// 補全框中沒有選中內容alert("已提交。");$("#auto").hide();}}}); // 為button添加點擊事件$("input[type='button']").click(function(){alert("已提交。");}) });


三、最后是在后臺進行數據的篩選

終于wordxml.jsp代碼為

<!-- 這個JSP返回的是XML數據,contentType的值是text/xml --> <%@ pagelanguage="java" contentType="text/xml; charset=UTF-8"pageEncoding="utf-8"%> <!-- 返回XML數據,將全部數據都返回,等待后臺能夠完整協作后再限制返回內容 --> <%String word=(String)request.getAttribute("word"); %> <words><% if("absolute".startsWith(word)){ %><word>absolute</word><%}%><% if("anyone".startsWith(word)){ %><word>anyone</word><%}%><% if("anything".startsWith(word)){ %><word>anything</word><%}%><% if("apple".startsWith(word)){ %><word>apple</word><%}%><% if("abandon".startsWith(word)){ %><word>abandon</word><%}%><% if("breach".startsWith(word)){ %><word>breach</word><%}%><% if("break".startsWith(word)){ %><word>break</word><%}%><% if("boolean".startsWith(word)){ %><word>boolean</word><%}%> </words>
Author:事始

Sign:僅僅要你還在嘗試。

就不算失敗。


轉載于:https://www.cnblogs.com/gcczhongduan/p/5089480.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【AJAX】AJAX实现搜索信息自己主动推荐并补全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中国精品久久 | 日韩欧美二区 | 91超碰在线免费观看 | 影音先锋成人网 | 青草综合 | 91在线视频免费观看 | 日本一区二区三区四区在线观看 | 精品国产欧美一区二区三区成人 | 久久免费福利视频 | 免费黄色在线看 | 精品国产一区在线观看 | 国产成人无码精品 | 亚洲国产欧美一区二区三区深喉 | 国产丝袜美腿一区二区三区 | 娇小激情hdxxxx学生 | 天堂av一区 | 中国第一毛片 | 已满十八岁免费观看全集动漫 | 亚洲www啪成人一区二区麻豆 | 天天色天| 日韩在线播放一区二区 | 久久大胆视频 | 亚洲淫片 | 国产激情在线 | 欧美三级午夜理伦三级中视频 | 欧美精品999 | 色综合综合色 | 中日韩免费毛片 | 四虎影院黄色 | 潮见百合子 | 亚洲美女精品视频 | 九七电影院97理论片 | 国产精品久久免费 | 久久久久亚洲av无码专区 | 人妻少妇一区二区 | 2024av视频 | 性爱免费视频 | 老女人做爰全过程免费的视频 | 久久特黄 | 强制高潮抽搐哭叫求饶h | 成人免费视频网址 | 色女人在线 | 超碰免费91| 欧美一级片免费在线观看 | 综合久草 | 性色av一区二区三区红粉影视 | 日韩精品――色哟哟 | 中文字幕乱码在线人视频 | 91夫妻视频| 韩国av在线播放 | 大桥未久恸哭の女教师 | 亚洲成人久 | 日韩一区二区三区在线 | 伊人网在线免费观看 | 欧美性视频在线 | 亚洲黄色小说视频 | 午夜视频在线看 | 精品一区二区三区免费 | 久久这里都是精品 | 青青草原一区二区 | 91禁国产网站 | 天天摸天天看 | 一边摸一边做爽的视频17国产 | 日剧再来一次第十集 | 国产精品资源网 | 色视频免费在线观看 | 亚洲欧美日韩国产一区二区 | 国产精品久久久久久久久久久久久久 | 别揉我奶头啊嗯一区二区 | 日韩成人免费在线视频 | 成人动漫一区二区三区 | 日本一区二区三区在线观看 | 国精产品乱码一区一区三区四区 | 国产免费观看视频 | 亚洲激情文学 | 99久久精品日本一区二区免费 | 日韩经典一区二区 | 国产女人叫床高潮大片免费 | 午夜精品免费视频 | 足交在线观看 | 亚洲精品xxxx| 婷婷在线一区 | 精品成人网 | 日韩一区二区三区四区五区 | 黄色小视频在线 | 精品不卡视频 | 国产乱色 | 爱福利视频一区二区 | 国产精品久久视频 | 亚洲免费高清 | xxx性日本| 91嫩草香蕉 | 欧美综合自拍 | 黄色资源在线播放 | 国产成人av一区二区三区 | 国产福利小视频在线观看 | 日韩人妻精品一区二区三区 | 日韩一级片中文字幕 | 精品国产自在精品国产精小说 |