`
zengshaotao
  • 浏览: 792065 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JQuery自动补全

 
阅读更多

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>页面的自动补全</title> 
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="js/jquery.js"> </script>  
 <script type="text/javascript" src="js/jquertAutoFill.js"></script> 
  </head>
 
  <body>
    请输入你想查找的内容:<input type="text" id="word"/>
    <input type="button" value="提交"/><br />
   
    <div id="auto"></div>
  </body>
</html>

 

 

//jquery自动补全

//定义全局变量
var highlightindex = -1;  //表示高亮的节点
var timeoutId;    //表示延時向服务器发送请的时间

/*Ajax 自动补全*/
//注册页面装在时执行的方法
$(document).ready(function () {
 //得到文本框对象
 var wordInput = $("#word");
  
 //得到文本框距离屏幕左边距和上边的距离
 var wordInputOffset = wordInput.offset();
 
 //自动补全框最开始隐藏起来
 //添加样式必须现价 css("position","absolute")属性
 $("#auto").hide().css("border", "1px black solid").css("position", "absolute").css("top", wordInputOffset.top + wordInput.height() + 6 + "px").css("left", wordInputOffset.left + "px").width(wordInput.width() + 2);
 
 //给文本框添加键盘按下并弹起的事件
 $("#word").keyup(function (event) {
  //处理文本框中的键盘事件
  //得到弹出框对象
  var autoNode = $("#auto");
  //得到当前按键的code值
  var myEvent = event || window.evnet;
  var keyCode = myEvent.keyCode;
  
  //如果输入的是字母,应该将文本框最新的信息发送给服务器
  //如果输入的是退格键或删除键,也应该将文本框的信息发送给服务器
  if (keyCode >= 65 || keyCode <= 90 || keyCode == 8 || keyCode == 46) {
   //1、首先获取文本框的内容
   var wordText = $("#word").val();
   //文本内容不为空才将文本框内容发给服务器
   if (wordText != "") {
    //2、将文本框的内容发给服务器
    //对上次未执行的延时做清除操作
    clearTimeout(timeoutId);
    //对服务器端进行交互延迟500ms,避免快速打字造成的频繁请求
    timeoutId = setTimeout(function(){
     $.post("AutomaticFillServlet", {word:wordText}, function (data) {
     //将dom对象data转换成JQuery的对象
     var jqueryobj = $(data);
     //找到所有word节点
     var wordNodes = jqueryobj.find("word");
     //遍历所有的word节点,取出单词内容,然后将单词内容添加到弹出框中
     //清空div里原来的内容
     autoNode.html("");
     wordNodes.each(function (i) {
      //获取单词
      var wordNode = $(this);
      //新建div节点,将单词内容加入到新建的节点中
      //将新建的节点加入到弹出框的节点中
      var newDivNode = $("<div>").attr("id",i);
      newDivNode.html(wordNode.text()).appendTo(autoNode);
      //添加鼠标进入事件,高亮节点
      newDivNode.mouseover(function(){
       //将原来高亮的节点取消
       if(highlightindex != -1){
        $("#auto").children("div").eq(highlightindex).css("background-color","white");
       }
       //记录新的高亮节点
       highlightindex =  $(this).attr("id");
       $(this).css("background-color","red");
      });
      //鼠标移出,取消高亮
      newDivNode.mouseout(function(){
       //取消节点的高亮
       $(this).css("background-color","white");
      });
      //鼠标补全
      newDivNode.click(function(){           
       //文本框的内容变成高亮显示的内容
       $("#word").val($(this).text());
       
       //隐藏弹出窗体
       $("#auto").hide();
      });
     });
     //如果服务服务器端有数据,则显示弹出框
     if (wordNodes.length > 0) {
      autoNode.show();
     } else {
      autoNode.hide();
      
      //弹出框隐藏时没有高亮显示的节点
      highlightindex = -1;
     }
    }, "xml");
    },500);
    
    
   } else {
    autoNode.hide();
    //弹出框隐藏时没有高亮显示的节点
    highlightindex = -1;
   }
  } else if(keyCode == 38) {  //向上键   
   //得到弹出框的所有子节点
   var autoNodes = $("#auto").children("div");
   if(highlightindex != -1){
    //如果原来存在高亮显示节点,则将背景色改为白色
    autoNodes.eq(highlightindex).css("background-color","white");
    //将highlightindex等于零的情况单独拿出来处理
    if(highlightindex == 0){
     highlightindex = autoNodes.length - 1;
    }else{
     highlightindex--;
    }   
   }else{
    highlightindex = autoNodes.length - 1;
   }
   
   //让现在高亮的内容变成红色
   autoNodes.eq(highlightindex).css("background-color","red");
  }else if(keyCode == 40){  //向下键  
   //得到弹出框的所有子节点
   var autoNodes = $("#auto").children("div");
   if(highlightindex != -1){
    //如果原来存在高亮显示节点,则将背景色改为白色
    autoNodes.eq(highlightindex).css("background-color","white");    
   } 
   highlightindex++; 
   
   if(highlightindex == autoNodes.length){
    highlightindex = 0;
   }
   //让现在高亮的内容变成红色
   autoNodes.eq(highlightindex).css("background-color","red");
  }else if (keyCode == 13) {
   //如果输入的是回车
   
   if(highlightindex != -1){
    //取出高亮显示下拉框的内容
    var comText = $("#auto").hide().children("div").eq(highlightindex).text();
    //文本框的内容变成高亮显示的内容
    $("#word").val(comText);
    
    highlightindex = -1;
   }else{
      var obj = $("#word");
      var count = obj.val();
    obj.val("");
    alert("文本框中的[" + count + "]被提交了");
    
    //让文本框失去焦点
    obj.get(0).blur();
   }   
  }
 });
 
 //给按钮添加事件,表示文本框中的数据被提交
 $("input[type='button']").click(function () {
  alert("\u6587\u672c\u6846\u4e2d\u7684[" + $("#word").val + "]\u88ab\u63d0\u4ea4\u4e86");
 });
});

 

 

package serverlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 自动补全
 * 向客服端返XML数据的servlet
 * @author Administrator
 *
 */
@SuppressWarnings("serial")
public class AutomaticFillServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 {
  doPost(request, response);
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 {
  //获得页面传过来的字符串
  String word = request.getParameter("word");
  
  //将字符串保存在request对象中
  request.setAttribute("word",word);
  
  //将请求转发给视图层(注意Ajax中,这个所谓的视图层不返回页面,只返回数据,所以也可以称作是一个数据层)
  //将"wordxml.jsp"处理后的数据发给 "JqueryAutoComplete.html"页面
  request.getRequestDispatcher("wordxml.jsp").forward(request, response);
 }

 public void init() throws ServletException
 {
  
 }
 public void destroy()
 {
  super.destroy();
 }
}

 

wordxml.jsp

<%--
 自动补全的Ajax实例
--%>
<%@ page contentType="text/xml; charset=UTF-8" language="java" %>
<!-- 返回xml数据的“视图层”暂时不做任何逻辑判断,先将所有的单词都返回、待前后台应用可以完整的协作后,在限制返回的内容 -->
<%
 //页面端传送的字符串
 String word = (String)request.getParameter("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("abandin".startsWith(word)){
 %>
  <word>abandin</word>
 <%
    }
    if("breach".startsWith(word)){
 %>
  <word>breach</word>
 <%
   }
   if("break".startsWith(word)){
    %>
  <word>break</word>
 <%
    }
    if("bad".startsWith(word)){
 %>
  <word>bad</word>
 <%}%>
</words>

 

分享到:
评论

相关推荐

    jquery 自动补全搜索框控件

    jQuery自动补全功能主要依赖于jQuery UI库中的Autocomplete组件。它监听用户在搜索框中的输入事件,当用户输入达到一定字符数量(通常是1个或以上)时,触发异步请求,向服务器发送查询请求。服务器返回匹配结果,...

    Jquery自动补全

    jQuery自动补全是一种常见的前端开发技术,用于提升用户体验,特别是在搜索框或输入字段中,它能够根据用户输入的内容实时提供预测建议。这个功能在许多网站和应用中都有所应用,如百度搜索、谷歌搜索等。它能够帮助...

    jQuery自动补全筛选input代码.zip

    本项目"jQuery自动补全筛选input代码"是利用jQuery实现的一个功能,它允许用户在input输入框中输入关键词时,自动筛选并显示匹配的信息。这种功能在网页搜索、表单填充等场景下非常实用,提高了用户体验。 首先,...

    jquery自动补全示例。包括后台,中文乱码解决JS

    **jQuery自动补全插件详解** jQuery 自动补全插件是一种常见的前端开发工具,它为用户在输入框中提供动态建议,提高了用户体验,尤其在处理大量数据输入时显得尤为重要。本示例将涵盖如何使用jQuery实现自动补全...

    jQuery 自动补全

    **jQuery 自动补全插件详解** 在网页开发中,为用户提供自动补全功能是一种常见的交互设计,可以提高用户体验,减少用户输入错误。jQuery 自动补全插件(jQuery UI Autocomplete)是实现这一功能的强大工具,它基于...

    jquery自动补全插件

    **jQuery自动补全插件详解** 在Web开发中,用户输入常常是交互体验的重要环节,为了提高用户体验,很多网站和应用引入了自动补全(Autocomplete)功能。jQuery作为一个广泛使用的JavaScript库,提供了丰富的插件...

    jquery自动补全.rar

    《jQuery自动补全功能详解》 在Web开发中,用户输入常常是交互的重要部分,而自动补全(Autocomplete)功能则能极大地提高用户体验,减少用户输入错误,提升操作效率。jQuery库以其轻量级、易用性以及丰富的插件...

    高级jQuery自动补全插件

    **jQuery自动补全插件详解** 在Web开发中,用户界面的交互性和便捷性是提升用户体验的关键因素之一。其中,自动补全功能是一项常见的需求,它可以在用户输入时提供预测建议,大大加快输入速度,降低错误率。jQuery...

    Asp.net+JQuery自动补全

    Asp.net与jQuery结合实现的自动补全功能(autocomplete)是一种常见的前端交互设计,它能够极大地提高用户在输入框中的输入效率。此功能通常应用于搜索框、表单填充等场景,为用户提供动态提示,根据他们输入的部分...

    jquery自动补全例子

    《jQuery自动补全功能详解与应用实践》 在Web开发中,用户输入的交互体验往往对网站或应用程序的用户体验有着重大影响。为了提高用户输入效率和便捷性,开发者常常会引入自动补全(AutoComplete)功能。jQuery库以...

    jQuery自动补全示例

    本示例为jquery自动补全的示例,其中包括两部分,第一是在本地构造的json格式的数据供自动补全用,第二是从后台将数据处理成json格式,jquery通过ajax请求后台的json数据,其中还有处理autocomplete不支持中文的方法...

    jquery自动补全代码

    **jQuery自动补全插件详解** 在Web开发中,用户界面的交互性和便捷性是提升用户体验的关键因素之一。jQuery库以其简洁的API和强大的功能深受开发者喜爱,而jQuery的自动补全插件则是提高输入效率、优化用户体验的...

    jQuery自动补全效果

    jQuery自动补全效果是一种常见的前端交互功能,常用于搜索框、表单输入等场景,能够为用户提供便捷的建议列表,提高用户体验。这个功能基于流行的JavaScript库jQuery实现,它简化了DOM操作,使得创建动态和交互式的...

    php+jquery 自动补全

    虽然jQuery本身并不直接提供代码补全功能,但很多编辑器和IDE都有针对jQuery的插件或扩展,提供jQuery函数和选择器的自动补全。例如,VSCode中的jQuery IntelliSense插件就是一个很好的例子。 将PHP和jQuery结合...

    jquery 自动补全例子

    在本示例中,我们将探讨如何使用jQuery实现一个自动补全功能,这在网页表单输入或者搜索框中非常常见,可以提供用户友好的交互体验。 首先,"jquery 自动补全 例子"是指使用jQuery库来创建一个自动补全的功能,这种...

    jQuery自动补全自动提示插件仿百度自动提示插件

    **jQuery自动补全插件详解:仿百度自动提示功能** 在网页开发中,为了提高用户体验,经常需要实现一种类似于搜索引擎的自动补全功能,让用户在输入框中输入内容时能够实时得到相关的建议或提示。jQuery作为一款广泛...

    jQuery自动补全

    jQuery自动补全是一种常见的前端开发功能,用于提升用户体验,特别是在输入框中进行搜索或填写信息时。这个功能允许用户在输入过程中快速选择匹配的建议项,常见于搜索引擎、表单填充和其他需要动态提示的场景。在...

    notepad++ css html js jquery 自动补全提示插件

    标题中的“notepad++ css html js jquery 自动补全提示插件”指的是Notepad++文本编辑器中的一个增强工具,这个插件专为提升CSS、HTML、JavaScript和jQuery的编码效率而设计。Notepad++是一款免费且开源的代码编辑器...

Global site tag (gtag.js) - Google Analytics