中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用Ajax實現一個自動補全功能

發布時間:2020-11-12 16:55:57 來源:億速云 閱讀:229 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關利用Ajax實現一個自動補全功能,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

如下圖:

利用Ajax實現一個自動補全功能

天貓:

利用Ajax實現一個自動補全功能

京東:

利用Ajax實現一個自動補全功能

這時候的你是否想到如何實現這個功能?

我們的網頁明明沒有刷新,可是卻出現了數據的交互,也就是Ajax的強大之處。

下面以一個例子來實現。

搜索框和搜索按鈕,我們希望在搜索框輸入部分書名時,能夠實現書名的自動補全功能。每當點擊了相應的書名,就把內容輸入到搜索框。

利用Ajax實現一個自動補全功能

對應的代碼

Search <input
     type="text" name="name" class="inputtable" 
     id="name" /> 
     <input type="image" src="images/serchbutton.gif"
     border="0" >

為了存貯自動補全的文字,我們使用div標簽

設置背景色為白色,絕對布局。并且默認不顯示。

<div id="context1"  >
</div>

在百度的補全功能中我們發現,每輸入一個字,對應的補全文字就會更新,所以我們要為搜索框設置鍵盤抬起事件(keyup),然后就是Ajax實現異步交互。

js代碼:

$(".inputtable").keyup(function(){
  var content=$(this).val();
  //如果當前搜索內容為空,無須進行查詢
  if(content==""){
   $("#context1").css("display","none");
   return ;
  }
  //由于瀏覽器的緩存機制 所以我們每次傳入一個時間
  var time=new Date().getTime();
  $.ajax({
   type:"get",
   //新建一個名為findBooksAjaxServlet的servlet
   url:"${pageContext.request.contextPath}/servlet/findBooksAjaxServlet",
   data:{name:content,time:time},
   success:function(data){
    //拼接html
    var res=data.split(",");
    var html="";
    for(var i=0;i<res.length;i++){
     //每一個div還有鼠標移出、移入點擊事件
     html+="<div onclick='setSearch_onclick(this)' onmouseout='changeBackColor_out(this)' onmouseover='changeBackColor_over(this)'>"+res[i]+"</div>";
    }
    $("#context1").html(html);
    //顯示為塊級元素
    $("#context1").css("display","block");
   }
  });
 });

我們的鼠標在選擇到自動補全的內容時,我們會發現內容的那一行會變色,即onmouseover事件,離開時恢復原色onmouseout事件,點擊時將內容填寫到搜索框onclick事件。所以在上面的代碼中我們會這樣寫

    var html="";
    for(var i=0;i<res.length;i++){
     //每一個div還有鼠標移出、移入點擊事件
     html+="<div onclick='setSearch_onclick(this)' onmouseout='changeBackColor_out(this)' onmouseover='changeBackColor_over(this)'>"+res[i]+"</div>";
    }

而其三種事件對應的js代碼如下:

//鼠標移動到內容上
 function changeBackColor_over(div){
  $(div).css("background-color","#CCCCCC");
 }
 //鼠標離開內容
 function changeBackColor_out(div){
  $(div).css("background-color","");
 }
 //將點擊的內容放到搜索框
 function setSearch_onclick(div){
  $(".inputtable").val(div.innerText);
  $("#context1").css("display","none");
 }

servlet:向server調用相應的業務然后返回查詢的結果

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html;charset=utf-8");
  request.setCharacterEncoding("utf-8");
  //獲取搜索框輸入的內容
  String name=request.getParameter("name");
  name=new String(name.getBytes("iso-8859-1"), "utf-8");
  //向server層調用相應的業務
  BooksServer booksServer=new BooksServer();
  String res=booksServer.findBooksAjax(name);
  //返回結果
  response.getWriter().write(res);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doGet(request, response);
 }

service層

把dao層查詢的所有書名拼接為一個字符串。

//查詢所有的書本名
 public String findBooksAjax(String name) {
  List<Object> nameList=booksDao.findBooksAjax(name);
  String res="";
  for (int i=0;i<nameList.size();i++) {
   if(i>0){
    res+=","+nameList.get(i);
   }else{
    res+=nameList.get(i);
   }
  }
  return res;
 }

dao層

根據部分書名,查詢類似的書名

//根據部分書名,查詢類似的書名
 public List<Object> findBooksAjax(String name) {
  QueryRunner qr=new QueryRunner(C3P0Util.getDataSource());
  try {
   return qr.query("select name from book where name like &#63;", new ColumnListHandler(),"%"+name+"%");
  } catch (SQLException e) {
   e.printStackTrace();
  }
  return null;
 }

運行結果:

利用Ajax實現一個自動補全功能

關于利用Ajax實現一個自動補全功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兰西县| 屏东市| 灵寿县| 大埔县| 宜黄县| 石柱| 安达市| 凯里市| 常熟市| 密山市| 资阳市| 峨山| 建德市| 澄迈县| 盐山县| 永嘉县| 中方县| 普兰县| 永宁县| 玉龙| 涿州市| 光泽县| 武宁县| 五常市| 同江市| 读书| 乌鲁木齐市| 万州区| 大庆市| 沧源| 湘乡市| 繁峙县| 三亚市| 万年县| 海原县| 宜丰县| 香港| 犍为县| 太原市| 布拖县| 伊宁市|