`

Jquery模仿Google Suggest基于js的动态下拉菜单

    博客分类:
  • AJAX
阅读更多
JSP页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>JqueryAutoComplete</title>    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
  </head>
  <script type="text/javascript" src="../javascript/jquery.js"></script>
  <script type="text/javascript" src="../javascript/auto.js"></script>
  <body>
    Google Suggest <input id="word" type="text">
    <input type="button" value="Click"><br/>
    <div id="auto"></div>
  </body>
</html>

JS文件
//全局变量,高亮的信息-1表示没有选中
var highlightindex = -1;
//延时处理
var timeout;
$(document).ready(function(){
	var wordInput = $("#word");
	//获得JQUERY封装的一个对象
	var wordInputOffset = wordInput.offset();
	//设置DIV为隐藏,并设置边框属性
	$("#auto").hide().css("border","1px black solid")
					 .css("position","absolute")
					 //input离上面的长度+input的高(宽)
					 .css("top",wordInputOffset.top+wordInput.height()+5+"px")
					 //input高左面的的长度
					 .css("left",wordInputOffset.left+"px")
					 //input的宽度
					 .width(wordInput.width()+6+"px");
	//添加事件
	$("#word").keyup(function(event){
		var myEvent = event || window.event;
		var myKeyCode = myEvent.keyCode;
		//给页面的DIV做一个缓存
		var div = $("#auto");		
		//获得文件框里面的值		
		if(myKeyCode>64 && myKeyCode<91 || myKeyCode==8 || myKeyCode==46){	
			var wordText = $("#word").val();
			if(wordText!=""){
				//延时操作
					clearTimeout(timeout);
					timeout = setTimeout(function(){
											//和服务器端交互,第四个参数设置返回是XML数据
							$.post("../servlet/AutoComplete",{word:wordText},function(data){
							//万能的$获得XML数据
							var xmlobj = $(data);
							//找到其中的WORD标签
							var wordNodes = xmlobj.find("word");
							div.html("");				
							//循环输出wordNodes
							wordNodes.each(function(i){
								//$(this)表示当前的WORD字段
								var wordNode = $(this);
								//创建 DIV并,设值,再添加到页面的DIV上.(还可以属性attr("value",text); )
								var newDiv = $("<div>").attr("id",i);
								newDiv.html(wordNode.text()).appendTo(div);
								newDiv.mouseover(function(){
									if(highlightindex!=-1){
										$("#auto").children("div").eq(highlightindex).css("background-color","white");
									}
									highlightindex = $(this).attr("id");
									$(this).css("background-color","blue");
								});
								newDiv.mouseout(function(){
									$(this).css("background-color","white");
								});
								newDiv.click(function(){
									$("#auto").hide();
									var textClick = $("#auto").children("div").eq(highlightindex).text();
									highlightindex = -1;
									$("#word").val(textClick);							
								});
							});
							//如果返回的wordNodes长度大于0就show
							if(wordNodes.length > 0){
								div.show();
							}else{						
								div.hide();
								highlightindex = -1;
							}
						},"xml");
					},1000);

			}else{
				//如果文本信息为空就隐藏
				div.hide();
				highlightindex = -1;
			}
			
			//键盘向上向下键
		}else if(myKeyCode == 38 || myKeyCode ==40){
			//向上
			if(myKeyCode == 38){
				//获得ID为auto里面的DIV对象
				var autoNodes = $("#auto").children("div");
				//如果没有被选中
				if(highlightindex != -1){
					//设置CSS
					autoNodes.eq(highlightindex).css("background-color","white");
					highlightindex--;
				}else{					
					highlightindex = autoNodes.length - 1;
				}
				autoNodes.eq(highlightindex).css("background-color","blue");
			}	
			//向下
			if(myKeyCode == 40){
				var autoNodes = $("#auto").children("div");
				if(highlightindex != -1){
					autoNodes.eq(highlightindex).css("background-color","white");
					highlightindex++;
				}else{
					highlightindex++;
				}
				if(highlightindex == autoNodes.length){
					highlightindex = 0;
				}
				autoNodes.eq(highlightindex).css("background-color","blue");
			}
			
			//回车键
		}else if(myKeyCode ==13){
			if(highlightindex!=-1){
				//获得选中的那个的文本值
				var textInputText = $("#auto").children("div").eq(highlightindex).text();
				highlightindex = -1;
				$("#word").val(textInputText);	
				$("#auto").hide();		
			}else{				
				alert("提交服务器");
				$("#auto").hide();
				//失去焦点
				$("#word").get(0).blur();
			}
		}
	});
	//获得一个input对象,并且他的type属性为button
	$("input[type='button']").click(function(){
		alert("提交服务器");
	});
});

Servlet后台代码
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		String word = request.getParameter("word");
		
		System.out.println(i++);
		request.setAttribute("word",word);
		request.getRequestDispatcher("../jqueryexample/wordxml.jsp").forward(request, response);
	}

JSP输的XML
<%@ page language="java" contentType="text/xml; charset=utf-8" pageEncoding="UTF-8"%>
<words>
	<word><%=request.getAttribute("word")%></word>
	<word>anyone</word>
	<word>ant</word>
	<word>apple</word>
	<word>浪花</word>
	<word>break</word>
	<word>book</word>
	<word>boolean</word>
	<word>blue</word>
</words>


分享到:
评论
1 楼 chinalian 2013-03-07  
谢谢,总结的很清晰。

相关推荐

    ASP模仿google suggest风格实现下拉菜单效果

    在本文中,我们将探讨如何使用ASP来模仿Google Suggest风格的下拉菜单效果。Google Suggest是一种自动补全功能,当用户在搜索框中输入文本时,它会提供与输入内容匹配的相关建议。这种功能提高了用户体验,减少了...

    Google Suggest ;-) 基于js的动态下拉菜单

    Google Suggest 是一个基于JavaScript实现的动态下拉菜单功能,它在用户输入关键词时提供实时的搜索建议。这一功能的核心原理是利用JavaScript在当前网页中创建一个iframe元素。这个iframe用于显示与用户输入相关的...

    google下拉菜单

    谷歌下拉菜单,也被称为Google Suggest或自动补全,是谷歌搜索引擎中的一项功能,它在用户输入查询词时提供实时的建议搜索项。这项功能不仅提高了搜索效率,还为用户提供了一种更快速、准确地找到所需信息的方式。在...

    飞飞模仿google(suggest)下拉提示框v1.6.rar

    【标题】"飞飞模仿google(suggest)下拉提示框v1.6.rar"是一个模拟谷歌搜索下拉提示功能的程序。这个程序旨在为用户提供类似于谷歌搜索引擎的自动填充建议体验,帮助用户更快地找到他们想要搜索的内容。谷歌的下拉...

    jquery suggest插件

    jQuery Suggest 插件正是基于这个库构建的,利用其强大的功能来实现动态输入建议。 ### 2. Suggest 插件的核心功能 - **实时匹配**:当用户在输入框中输入字符时,插件会根据预设的数据源实时显示匹配的建议列表。...

    google suggest 下拉菜单实现代码(asp.net版本)

    整个实现过程通过JavaScript与ASP.NET后端的协同工作,实现了动态的谷歌建议下拉菜单功能。用户在输入框中输入时,前端通过Ajax向服务器发起请求,服务器处理请求并返回匹配的建议,前端接收到响应后更新下拉菜单...

    飞飞模仿google(suggest)下拉提示框sggestV1.5

    此小程序是模仿Google(sgguest)输入提示框所编写 亦可用于用户注册邮箱时的提示 此程序使用方便简单、易用灵活 且不限Asp、php、net 更新说明: 1.支持xhtml 2.兼容IE6,IE7,FF 3.支持input显示与value分离 4.支持...

    基于JQUERY的SUGGEST效果,自己写的

    基于JQUERY的SUGGEST效果,自己写的

    JQuery插件Suggest,实现类百度智能提示

    JQuery插件Suggest来做那些机票预订网站中的输入智能提示功能,这个功能对于用户体验性来说,挺不错的,用于实现类似百度的智能提示功能也是一个不错的选择。

    jquery-suggest:jQuery的建议

    jQuery-Suggest 是一个基于 jQuery 的 suggest 组件,它主要为 PC 端的搜索框提供建议词条。 为什么要做这个组件 我曾经做过一个基于 Zepto 简洁实用的 suggest 组件:。 这个组件稍微改造即可在 jQuery 下使用...

    Google Suggest,jquery autocomplete,自动完成示例

    结合描述中的博客链接,我们可以推断这篇博客可能详细介绍了如何将Google Suggest的原理应用到jQuery Autocomplete插件中,为用户提供类似谷歌搜索那样的自动完成体验。博客作者可能分享了实现这一功能的步骤、代码...

    jquery suggest 自动补全插件演示

    jQuery Suggest插件是基于JavaScript库jQuery的一个组件,它提供了一种高效且灵活的方式来实现输入框的自动补全功能。该插件的核心功能是在用户输入文字时,根据预设的数据源实时展示匹配的建议列表,用户可以通过...

    JavaScript Suggest自动补全的输入框下拉提示类

    JavaScript Suggest自动补全的输入框下拉提示类是一种常见的前端开发技术,广泛应用于各种Web应用,如搜索引擎、表单输入、代码编辑器等。它为用户提供了一个方便、高效的交互体验,通过预测用户可能要输入的内容,...

    jquery实例5:仿Google Suggest自动补齐

    **jQuery 实例5:仿 Google Suggest 自动补全** 在网页开发中,提供自动补全功能能够极大地提升用户体验,尤其是在搜索或者输入框输入时。Google 的搜索建议就是这一功能的经典应用,它能够根据用户输入的关键词...

    jquery练习的例子,仿真google suggest

    jquery练习的例子,仿真google suggestjquery练习的例子,仿真google suggestjquery练习的例子,仿真google suggestjquery练习的例子,仿真google suggestjquery练习的例子,仿真google suggestjquery练习的例子,...

    google suggest 实现 ajax应用

    本主题主要聚焦于如何使用ASP.NET框架实现一个类似于Google Suggest的功能,即在用户输入文本时动态提供搜索建议。 【Google Suggest 简介】 Google Suggest是Google搜索引擎的一项功能,它在用户输入关键词时即时...

    AJAX学习总结(九)---Jquery实例:仿googlesuggest自动补全功能

    在本文中,我们将深入探讨AJAX技术在JavaScript库jQuery中的应用,特别是通过一个实战案例——仿谷歌搜索建议(Google Suggest)的自动补全功能。这个功能广泛应用于各种搜索框,能够极大地提升用户体验,使用户在...

    google suggest(支持中文)

    谷歌建议(Google Suggest)是一项在线搜索功能,它在用户输入查询时实时提供可能的搜索建议。这个项目基于jQuery库实现,使得用户在输入框中输入中文时也能得到相关的搜索建议。jQuery是一个广泛使用的JavaScript库...

    ExtJs Google Suggest 动态查询效果

    在本示例中,"ExtJs Google Suggest 动态查询效果" 是一个利用ExtJs实现的功能,它模仿了谷歌搜索框的自动建议功能。当你在搜索框中输入文字时,下拉列表会实时更新,显示与输入内容匹配的建议项。 首先,我们要...

Global site tag (gtag.js) - Google Analytics