`
WendyJan
  • 浏览: 7213 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

仿google搜索提示

阅读更多
我是专做后台的,平时也弄一下 javascript 和 CSS ,之前在公司用 DWR 和 JS 做了一个类似 google 的搜索提示。现在把 DWR 去掉,用静态的 JSON 数据代替,为的就是脱离后台,可以静态看到效果。现在只整理了一部分,还不支持键盘事件。如果有时间我会把剩下的功能也整理出来。

如果写得不好,大家请指教。

在 IE6 FireFox Chrome 下都可以

先看下 html 代码:

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
	<title>Auto Complete</title>
	<script type="text/javascript" src="autoComplete.js"></script>
	<link rel="stylesheet" type="text/css" href="autoComplete.css"></link>
</head>

<body>
	<div>请输入a,b或其它字符看效果。</div>
	<div>
		<input name="summary" id="summary" class="text medium" onkeyup="Auto.autoGet(this.value);" onblur="Assist.autoClose();" autocomplete="off" /><input type="button" value="搜索">
	</div>
	<div>
		<ul id="autoUl"></ul>
	</div>
</body>
</html>
分享到:
评论
13 楼 scd01234 2010-01-26  
支持原创!
12 楼 jackleaf 2010-01-21  
这位仁兄做的简单点了。
我做了个半成品,有键盘操作的,用jquery写的,纯js 的版本在一个项目中,不好分离。暂时用框架写了个简单的。
11 楼 huqing 2010-01-12  
无图不真相
10 楼 javazeke 2010-01-11  
Lucene可以提供数据,不过有些数据库也提供了建索引的功能
9 楼 WendyJan 2010-01-11  
在方法autoGet里调用你的ajax方法,然后返回json格式的数据就可以了``

这里只负责前端的显示``后台你用dwr,dojo等等调用后台方法都可以``这不是本文章的重点
8 楼 jkgao801 2010-01-11  
在项目应用中,这种提示的东西,一定是从数据库得到的动态数据。
静态数据无应用意义。
7 楼 javazeke 2010-01-11  
这儿有个,不过是jQuery的,http://javazeke.iteye.com/blog/521390
应该比较容易上手
6 楼 WendyJan 2010-01-11  
键盘事件都有的``不过之前的代码有点乱,现在还没时间去整理`

5 楼 lyg 2010-01-11  
不错,如果再加上上键盘的下方向键选择事件就更好了
4 楼 xaoyaofeng 2010-01-11  
效果不错,支持.
3 楼 yonglin4605 2010-01-11  
是不是应该先截个图给个效果啊
2 楼 WendyJan 2010-01-08  
input {
	margin: 0;
	padding: 0;
}

ul {
	margin: 0;
	padding: 0;
	list-style: none;
	background: #ffffff;
}

ul li {
	line-height: 1.5em;
	margin: 0;
	padding: 0;
	width: 302px;
	background: #ffffff;
	cursor: default;
	font-size: 12px;
	height: 20px;
}

.autoUl {
	margin-top: -2px;
	padding: 0;
	width: 302px;
	border: 1px solid #111111;
	position: absolute;
	background: #ffffff;
}

.mouseOver {
	color: #ffffff;
	background: #6699FF;
}

.mouseOut {
	color: #111111;
	background: #ffffff;
}

.borderNull {
	border: none;
}

.autoNone {
	display: none;
}

.medium {
	width: 300px;
}

.resultName {
	float: left;
}

.resultTimes {
	color: #008000;
	text-align: right;
}
1 楼 WendyJan 2010-01-08  
/**
 * @author <a href="mailto:toozwd@gmail.com">张文弟</a>
 * 模仿google搜索的自动完成
 * 用最精简的代码实现最强大的功能
 */

//instead document.getElementById()
var $ = function (id) {
	return "string" == typeof id ? document.getElementById(id) : id;
};

//instead document.getElementById().value
var $F = function (id) {
	return $(id).value;
};

var Auto = {
	
	autoGet : function(value) {
		if(value == '') {
			this.closePop();
		} else {
			// get the return value list from json
			var jsonValue = getListJson(value).summary;
			this.autoCallback(jsonValue);
		}
	},
	
	autoCallback : function(list) {
		//remove the old pop li
		this.closePop();
		if (list.length > 0) {
			for(var i = 0;i < list.length; i++){
				$("autoUl").className = 'autoUl';
				var autoLi = document.createElement("li");
				
				// onmouseout event
				autoLi.onmouseout = function() {
					this.className = 'mouseOut'; 
					Assist.isOnmouseover = false;
				}
				
				// onmouseover event
				autoLi.onmouseover = function() {
					this.className = 'mouseOver';
					Assist.isOnmouseover = true;
				}
				
				// onclick event
				autoLi.onclick = function() {
					Assist.autoPush(this);
				}
				
				liValue = '<div class="resultName">' + list[i].name + '</div>';
				liValue += '<div class="resultTimes">' + list[i].times + '&nbsp;结果</div>';
				autoLi.innerHTML = liValue;

				$("autoUl").appendChild(autoLi);
			}
			
			//pop the li
			var closeLi = document.createElement("li");
			closeLi.style.textAlign = "right";
			closeLi.innerHTML = '<a href="javascript:void(0);" onclick="Auto.closePop();">关闭</a>';
			$("autoUl").appendChild(closeLi);
		}
	},
	
	closePop : function() {
		var ul = $("autoUl").childNodes.length;
		for(var i = ul - 1; i >= 0 ; i--) {
			$("autoUl").removeChild($("autoUl").childNodes[i]);
		}
		$("autoUl").className = "borderNull";
	}
}

var Assist = {

	isOnmouseover : false,
	
	// close the auto complete message when onclick the page of the body(input lose focus)
	autoClose : function() {
		if(this.isOnmouseover == false) {
			Auto.closePop();
		}
	},
	
	autoPush : function(obj) {
	    $("summary").value = obj.childNodes[0].firstChild.nodeValue;
	    Auto.closePop();
	    //document.forms[0].submit();
	}

}

// the json test data
function getListJson(name) {
	if(name == 'a') {
		var summaryJson = {"summary": [  
	        {"name": "auto", "times": "13"},  
	        {"name": "ajax", "times": "15"},  
	        {"name": "abacus", "times": "33"}  
			]  
		};
		return summaryJson;
	} else if(name == 'b') {
		var summaryJson = {"summary": [  
	        {"name": "blue", "times": "18"},  
	        {"name": "blind", "times": "24"},  
	        {"name": "because", "times": "384"}  
			]  
		};
		return summaryJson;
	} else {
		var summaryJson = {"summary": [  
			{"name": "didn't input", "times": "31"},
			{"name": "the 'a' or 'b'", "times": "39"},
			{"name": "display the ", "times": "44"},  
			{"name": "defult value", "times": "129"}  
			]  
		};
		return summaryJson;
	}
}

相关推荐

    仿谷歌搜索提示

    【标题】"仿谷歌搜索提示"的实现与详解 在IT行业中,用户界面的友好性和易用性至关重要,其中搜索提示功能就是一个典型的例子。"仿谷歌搜索提示"是指模仿谷歌搜索引擎在用户输入关键字时,实时显示相关搜索建议的...

    仿谷歌搜索提示功能源码20130301

    仿谷歌搜索提示功能源码 源码描述: 此源码仿谷歌搜索提示功能 利用了AjaxControlToolkit.dll控件的autocompleteextender 当用户在搜索框输入信息时,程序会自动从数据库检索信息 无刷新方式显示在输入框下方,提示...

    Ajax仿google搜索提示Asp数据库版 -ASP源码.zip

    【Ajax仿Google搜索提示Asp数据库版 - ASP源码】是一个基于ASP技术实现的搜索提示功能,它模拟了Google搜索引擎的实时搜索建议效果。在网页中输入关键字时,该功能能够快速从数据库中检索相关数据,并实时显示为下拉...

    Ajax仿google搜索提示Asp数据库版

    【Ajax仿Google搜索提示Asp数据库版】是一个基于ASP(Active Server Pages)技术实现的搜索提示功能,旨在模仿Google搜索引擎的实时搜索建议功能。这个功能能够显著提升用户体验,当用户在搜索框输入关键词时,系统...

    仿google搜索提示 SuggestFramework的使用

    标题中的“仿google搜索提示 SuggestFramework的使用”是指一种基于特定框架(SuggestFramework)构建的搜索提示功能,该功能模仿了Google搜索引擎在用户输入关键词时提供的实时搜索建议。这种功能可以极大地提升...

    仿google搜索提示效果和二级联动

    本项目“仿google搜索提示效果和省市二级联动”旨在模仿Google搜索引擎的实时搜索建议功能,并结合中国省市的二级联动选择,为用户提供更加智能化的交互体验。下面我们将深入探讨这一项目的实现原理和涉及的技术栈。...

    ASP源码—Ajax仿google搜索提示效果 数据库版.zip

    在本案例中,“ASP源码—Ajax仿google搜索提示效果 数据库版.zip”是一个包含ASP源代码的压缩包,其目标是实现一个类似于Google搜索框的实时搜索提示功能,利用Ajax(Asynchronous JavaScript and XML)技术,用户在...

    基于ASP的Ajax仿google搜索提示效果 数据库版.zip

    标题 "基于ASP的Ajax仿google搜索提示效果 数据库版.zip" 涉及到的是一个使用Active Server Pages (ASP)技术构建的Web应用程序,该程序旨在实现类似Google搜索的实时搜索提示功能,同时结合了Ajax(异步JavaScript和...

    弹出模态层 仿Google搜索提示(异步获取数据)

    "弹出模态层 仿Google搜索提示(异步获取数据)"是一个典型的例子,它结合了多项技术,旨在提高用户体验,尤其是对于搜索功能的使用。这个项目的核心是利用jQuery进行异步数据获取,为用户提供即时的搜索建议,同时...

    Ajax仿Google搜索提示ASP+Access数据库版

    **Ajax仿Google搜索提示ASP+Access数据库版** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。Google Suggest是Google搜索引擎中的一个特性,它会在用户输入...

    Qt 控件 实现 QComboBox输入自动提示功能(仿Google搜索提示)

    而实现QComboBox输入自动提示功能,可以极大地提升用户体验,类似于Google搜索框的自动完成效果。这个功能在开发过程中常用于减少用户的输入负担,提高数据选择的效率。本篇将详细介绍如何在C++中使用Qt库来实现这一...

    Asp+Ajax仿google搜索提示效果 数据库版-ASP源码.zip

    ASP源码,压缩包解压密码:www.cqlsoft.com

    ASP搜索框仿GOOGLE智能提示

    ASP实现搜索框仿GOOGLE智能提示,随输入的信息智能显示相关数据

    仿goolge搜索提示

    在IT行业中,搜索引擎的开发是一项复杂且技术含量高的工作,而“仿Google搜索提示”则是一种常见的用户体验优化功能。这个功能通常被称为自动补全或预测搜索,它可以在用户输入搜索关键词时提供相关的搜索建议,极大...

    QComboBox输入自动提示功能(仿Google搜索提示)

    在许多用户界面设计中,为了提升用户体验,我们会为输入框添加自动提示功能,就像Google搜索那样,用户在输入时能实时看到匹配的建议。本教程将详细介绍如何利用`QComboBox`和`QListWidget`来实现这种输入自动提示的...

    ASP实例开发源码—Asp+Ajax仿google搜索提示效果 数据库版.zip

    在这个实例中,Ajax主要负责在后台与服务器进行异步通信,获取搜索提示数据,然后在前端动态显示。 首先,我们需要了解ASP中的基本元素。ASP页面通常包含HTML、VBScript或JScript代码,以及可能的服务器端脚本。当...

    QCombox自动提示,仿谷歌搜索功能

    在本项目“QCombox自动提示,仿谷歌搜索功能”中,我们将看到如何结合`QComboBox`和`QListWidget`来实现这样的效果。 首先,我们要理解`QComboBox`的基本用法。它有两个主要的组成部分:一个可编辑的文本框和一个...

    仿google的搜索

    同时,为了提供良好的用户体验,还可以考虑添加搜索提示的延迟加载,即在用户停止输入一段时间后才发送请求,减少不必要的网络交互。 总的来说,“仿google的搜索”项目结合了Ajax的异步交互优势和Lucene的高效搜索...

Global site tag (gtag.js) - Google Analytics