<!-- 模拟google搜索 -->
<script type="text/javascript">
/**//********************************可配置选项********************************/
// 被选中的相似关键字背景颜色
var selectedBgColor = "#CCCCCC";
// 未被选中的相似关键字背景颜色
var unselectedBgColor = "#FFFFFF";
// 相似关键字列表框的边框
var listBorder = "1 solid #000000";
/**//***************************************************************************/
/**//********************************不可配置选项********************************/
// 上一次输入的关键字(用来判断关键字是否有改变,没有则不再去服务端重新获取提示关键字)
var oldKeyValue;
// 鼠标相对于提示关键字列表框的位置(0:提示框外面,1:提示框里面)
var mouseLocation = 0;
// 当前选中的提示关键字索引(从0开始,等于-1表示没有被选中项)
var selectedKeyIndex = -1;
// 上一次选中的提示关键字索引(从0开始,等于-1表示没有上次被选中项)
var oldSelectedKeyIndex = -1;
// 提示关键字总数
var tdCount = 0;
/**//***************************************************************************/
/**//*
用途:给String对象添加去除左右空格方法
*/
String.prototype.trim = function() {
var m = this.match(/^\s*(\S+(\s+\S+)*)\s*$/);
return (m == null) ? "" : m[1];
}
/**//*
用途:初始化提示关键字列表框的状态
*/
function initKeyListState(){
selectedKeyIndex = -1;
oldSelectedKeyIndex = -1;
tdCount = 0;
}
/**//*
用途:将上一次选中的关键字项变为未选中
*/
function disSelectedOldKey(){
//判断说明:oldSelectedKeyIndex!=selectedKeyIndex
// 当只有一个相似关键字的时候,则不存在上一次选中和这次选中关键字,
// 只要第一次选中后,按向上或向下箭头都是选中。
if (oldSelectedKeyIndex!=-1&&oldSelectedKeyIndex!=selectedKeyIndex){
$('keyId'+ oldSelectedKeyIndex).bgColor=unselectedBgColor;
}
// 上一次选中项更新
oldSelectedKeyIndex = selectedKeyIndex;
}
/**//*
用途:当按上下箭头时选中新的提示关键字项,按回车时将选中的提示关键字输入到搜索框。
*/
function setSelectedKey(){
// $('keyId0')存在表示有相关提示关键字,不存在则不处理。
if($('keyId0')){
if (event.keyCode==38){
//------处理向上事件------
if (selectedKeyIndex==-1){
selectedKeyIndex = tdCount-1;
}else{
selectedKeyIndex= (selectedKeyIndex+tdCount-1)%tdCount;
}
$('keyId'+ selectedKeyIndex).bgColor= selectedBgColor;
disSelectedOldKey();
}else if (event.keyCode==40){
//------处理向下事件------
if (selectedKeyIndex==-1){
selectedKeyIndex = 0;
}else{
selectedKeyIndex = (selectedKeyIndex+1)%tdCount;
}
$('keyId'+ selectedKeyIndex).bgColor= selectedBgColor;
disSelectedOldKey();
}else if (event.keyCode==13){
//------处理回车事件------
$('cond').value=$('keyId'+ selectedKeyIndex).innerText;
setCursorLast($('cond'));
// 隐藏提示关键字列表框
$('dropdownlistDiv').style.display='none';
}
}
}
/**//*
用途:获取相似关键字
*/
function getConformKey(){
//得到输入的关键字
var keyValue = $('cond').value.trim();
// 如果这次的查询关键字和上次的一样,则不去服务器重新获取相似关键字列表。
if (keyValue!=oldKeyValue){
// 关键字为空则不去服务器获取相似关键字列表
if (keyValue==''){
DWRUtil.removeAllRows('showKeyList');
setDropListVisible(false);
initKeyListState();
}else{
boProduct.getListBy(keyValue,conformKeyCallback);
}
}
}
/**//*
用途:获取关键字回调方法
*/
function conformKeyCallback(keyList){
DWRUtil.removeAllRows('showKeyList');
initKeyListState();
if (keyList.length>0){
// 生成相似关键字提示框
DWRUtil.addRows('showKeyList',keyList,cellFuncs, {
cellCreator:function(options) {
var td = document.createElement("td");
td.id = 'keyId' + tdCount++;
td.onmouseover = function (){selectedKeyIndex=parseInt(this.id.substring(5,td.id.length));this.bgColor=selectedBgColor;disSelectedOldKey();};
td.onclick= function (){
$('cond').value=this.innerText;
$('cond').focus();
setCursorLast($('cond'));
$('dropdownlistDiv').style.display='none';
};
return td;
},escapeHtml:false});
setDropListVisible(true);
}else{
setDropListVisible(false);
}
}
/**//*
用途:表格数据显示处理方法
*/
var cellFuncs = [
function(data) { return data.code+' -- '+data.name; }
];
/**//*
用途:将输入框的光标移到最后
*/
function setCursorLast(inputObj){
var inputRange = inputObj.createTextRange();
inputRange.collapse(true);
inputRange.moveStart('character',inputObj.value.length);
inputRange.select();
}
/**//*
用途:创建相似关键字列表框
*/
function createShowDiv(){
var showDiv = document.createElement("div");
showDiv.id = "dropdownlistDiv";
with(showDiv.style){
position = "absolute";
//层的绝对位置从这调整
left = parseInt($('cond').style.left.replace('px',''))+303;
top = parseInt($('cond').style.top.replace('px',''))+parseInt($('cond').style.height.replace('px',''))+51;
width = parseInt($('cond').style.width.replace('px',''));
border = listBorder;
zIndex = "1";
display='none';
backgroundColor = unselectedBgColor;
}
showDiv.onmouseover=function (){mouseLocation=1;};
showDiv.onmouseout=function (){mouseLocation=0;};
//overflow设置滚动条
showDiv.innerHTML = "<div style='width:100%;height:150px;overflow:auto;'><table border='0' style='width: 100%;height:20%;font-size: 12;color:#33CC00;'><tbody id='showKeyList' style='margin-left: 0;margin-right: 0;margin-bottom: 0;margin-top: 0;'></tbody></table></div>";
document.body.appendChild(showDiv);
initKeyListState();
}
/**//*
用途:设置相似关键字列表框是否可见
参数:isDisplay,true表示可见,false表示不可见
*/
function setDropListVisible(isDisplay){
if (mouseLocation == 1){
return;
}
if (($('cond').value.trim()!='')&&(isDisplay==true)){
$('dropdownlistDiv').style.display='';
}
else{
$('dropdownlistDiv').style.display='none';
}
}
// 将创建相似关键字列表框方法附加到onload事件中
if (window.addEventListener){
window.addEventListener('load', createShowDiv, false);
}else if (window.attachEvent){
window.attachEvent('onload', createShowDiv);
}
分享到:
相关推荐
在IT行业中,模拟Google搜索特效是一项常见的前端开发任务,它涉及到网页动态效果的实现,以提供用户友好的交互体验。这个项目的目标是复制Google搜索引擎在用户输入查询时展示的实时搜索建议和结果预览功能。下面...
在本项目中,"模拟Google搜索 JSP java" 的目标是利用这些技术创建一个类似于Google搜索引擎的功能,允许用户输入关键词并返回相关结果。这个过程涉及了多个知识点,包括但不限于以下几个方面: 1. **JSP基础**:...
在IT行业中,模拟Google搜索是一项常见的技术挑战,它涉及到网络爬虫、网页抓取以及JavaScript交互等多个领域。这里我们将深入探讨这个主题,了解如何通过编程实现这一功能。 首先,我们要理解Google搜索的工作原理...
本项目聚焦于使用Flex来模拟Google的搜索功能,旨在提供类似Google搜索引擎的用户体验。下面将详细介绍如何利用Flex技术和相关知识来实现这一目标。 1. **Flex基础知识**:Flex是Adobe开发的用于构建桌面和Web应用...
**Ajax+JSON 模拟谷歌搜索页面** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新。JSON...
谷歌模拟抓取工具是一款专为SEO(搜索引擎优化)和网站管理员设计的实用工具,它能够模拟Google搜索引擎的爬虫行为,帮助用户预览并分析网页在Google搜索结果中的表现。这款工具的重要性和价值在于,它使得网站所有...
"模拟百度google搜索引擎"是一个项目,旨在实现类似百度和Google的搜索功能,提供模糊查找的能力,让用户可以方便地检索信息。这个项目可能涉及到多个技术层面,包括数据结构、算法、网络爬虫、自然语言处理等。 ...
本实例是用SSH+DWR+Oracle10g做的模拟Goolge搜索的守完整实例 内容包括: 1、给每行绑定一个鼠标移上和移走事件 onmouseover onmouseout 2、焦点如果从文本框转移动显示的层中 设置了文本框失去焦点事件,目的是让...
界面设计通常包括一个输入框和一个提交按钮,以模拟谷歌搜索框的经典样式。此外,可能还包括一些高级搜索选项,如筛选器或下拉菜单,以增强用户体验。 在实现搜索功能时,ASP源码会捕获用户在搜索框中输入的关键词...
在本项目"**DWR操作数据库模拟实现Google搜索效果**"中,我们将探讨如何利用DWR技术来创建一个类似Google搜索的体验。这个项目的核心目标是通过用户在前端输入关键词,实时从后台数据库中检索匹配的信息,并在页面上...
Java谷歌搜索架构是一种基于Java技术实现的网络爬虫系统,旨在模拟谷歌搜索引擎的工作流程,用于抓取、处理和索引互联网上的网页数据。这个系统通常包括以下几个关键组件: 1. **爬虫(Web Crawler)**:作为整个...
该工具集成了各大常见蜘蛛UA,模拟这些蜘蛛UA访问抓取网站,目前网络上很流行蜘蛛挂马,通过该工具模拟访问可以分析网站是否被挂针对搜索引擎的挂马,可以模拟蜘蛛查看源码。 用法也很简单,打开以后输入目标地址,...
这个过程应该尽可能地模拟Google搜索的实时反馈机制,即用户在输入框中每输入一个字符,搜索结果就能即时更新。这通常涉及到JavaScript事件监听,如`onkeyup`或`oninput`,以捕捉用户的输入并触发异步请求。 【标签...
本示例主要展示了如何使用纯JSP和Direct Web Remoting (DWR)技术来构建一个功能丰富的用户界面,其中包括三级联动下拉选择菜单、无刷新联动、用户存在性判断以及模拟Google搜索效果的功能。DWR是一种JavaScript库,...
6. **Google 蜘蛛**:这可能是一个网络爬虫工具,模拟Google搜索引擎的行为,遍历互联网上的页面,寻找特定的模式或信息,如公开的目录、可下载的文件等。 7. **Alt-Google**:与第一个"Alt-Google"类似,这可能是...