仿百度的关键词匹配搜索示例


Posted in Javascript onSeptember 25, 2013
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>关键词匹配搜索仿百度</title> 
<meta name="description" content=" 内容介绍不超过100个中文"> 
<meta name="keywords" content=" 内容相关关键词3-5个"> 
<style> 
body, ul, li { margin: 0; padding: 0;} 
body{ font-size:12px; font-family:sumsun,arial;background:#FFFFFF;} 
.gover_search{ position:relative; z-index:99; height:63px; padding:15px 0 0 20px; border:1px solid #b8cfe6; border-bottom:0; background:url(../images/gover_search_bg.gif) repeat-x 0 0;} 
.gover_search_form{height:36px;} 
.gover_search .search_t{ float:left; width:112px; line-height:26px; color:#666;} 
.gover_search .input_search_key{ float:left; width:462px; height:18px; padding:3px; margin-right:5px; border:1px solid #ccc; line-height:18px; background:#fff;} 
.gover_search .search_btn{ float:left; width:68px; height:26px; overflow:hidden; border:1px solid #ccc; text-align:center; color:#ff3300; letter-spacing:5px; background:url(../images/gover_search_bg.gif) no-repeat 0 -79px; cursor:pointer; font-weight:bold;} 
.gover_search .search_suggest{ position:absolute; z-index:999; left:132px; top:41px; width:468px; border:1px solid #ccc;border-top:none; display:none;color:#004080; } 
.gover_search .search_suggest li{height:24px; overflow:hidden; padding-left:3px; line-height:24px; background:#fff; cursor:default;} 
.gover_search .search_suggest li.hover{background:#ddd;} 
.num_right{float:right;text-align:right;line-height:24px;padding-right:10px} 
</style> 
</head> <body> 
<div class="gover_search"> 
<div class="gover_search_form clearfix"> 
<span class="search_t">关键词匹配搜索</span> 
<input type="text" class="input_search_key" id="gover_search_key" placeholder="请输入关键词直接搜索" /> 
<button type="submit" class="search_btn">搜索</button> 
<div class="search_suggest" id="gov_search_suggest"> 
<ul> 
</ul> 
</div> 
</div> 
</div> 
<script type="text/javascript" src="http://jt.875.cn/js/jquery.js"></script> 
<script type="text/javascript"> 
//实现搜索输入框的输入提示js类 
function oSearchSuggest(searchFuc){ 
var input = $('#gover_search_key'); 
var suggestWrap = $('#gov_search_suggest'); 
var key = ""; 
var init = function(){ 
input.bind('keyup',sendKeyWord); 
input.bind('blur',function(){setTimeout(hideSuggest,100);}) 
} 
var hideSuggest = function(){ 
suggestWrap.hide(); 
} 
//发送请求,根据关键字到后台查询 
var sendKeyWord = function(event){ 
//键盘选择下拉项 
if(suggestWrap.css('display')=='block'&&event.keyCode == 38||event.keyCode == 40){ 
var current = suggestWrap.find('li.hover'); 
if(event.keyCode == 38){ 
if(current.length>0){ 
var prevLi = current.removeClass('hover').prev(); 
if(prevLi.length>0){ 
prevLi.addClass('hover'); 
input.val(prevLi.html()); 
} 
}else{ 
var last = suggestWrap.find('li:last'); 
last.addClass('hover'); 
input.val(last.html()); 
} 
}else if(event.keyCode == 40){ 
if(current.length>0){ 
var nextLi = current.removeClass('hover').next(); 
if(nextLi.length>0){ 
nextLi.addClass('hover'); 
input.val(nextLi.html()); 
} 
}else{ 
var first = suggestWrap.find('li:first'); 
first.addClass('hover'); 
input.val(first.html()); 
} 
} 
//输入字符 
}else{ 
var valText = $.trim(input.val()); 
if(valText ==''||valText==key){ 
return; 
} 
searchFuc(valText); 
key = valText; 
} 
} 
//请求返回后,执行数据展示 
this.dataDisplay = function(data){ 
if(data.length<=0){ 
suggestWrap.hide(); 
return; 
} 
//往搜索框下拉建议显示栏中添加条目并显示 
var li; 
var tmpFrag = document.createDocumentFragment(); 
suggestWrap.find('ul').html(''); 
for(var i=0; i<data.length; i++){ 
li = document.createElement('LI'); 
li.innerHTML = data[i]; 
tmpFrag.appendChild(li); 
} 
suggestWrap.find('ul').append(tmpFrag); 
suggestWrap.show(); 
//为下拉选项绑定鼠标事件 
suggestWrap.find('li').hover(function(){ 
suggestWrap.find('li').removeClass('hover'); 
$(this).addClass('hover'); 
},function(){ 
$(this).removeClass('hover'); 
}).bind('click',function(){ 
$(this).find("span").remove(); 
input.val(this.innerHTML); 
suggestWrap.hide(); 
}); 
} 
init(); 
}; 
//实例化输入提示的JS,参数为进行查询操作时要调用的函数名 
var searchSuggest = new oSearchSuggest(sendKeyWordToBack); 
//这是一个模似函数,实现向后台发送ajax查询请求,并返回一个查询结果数据,传递给前台的JS,再由前台JS来展示数据。本函数由程序员进行修改实现查询的请求 
//参数为一个字符串,是搜索输入框中当前的内容 
function sendKeyWordToBack(keyword){ 
/* var obj = { 
"keyword" : keyword 
}; 
$.ajax({ 
type: "POST", 
url: "${ctx}/front/suqiu2/search/prompt-keyword.action", 
async:false, 
data: obj, 
dataType: "json", 
success: function(data){ 
//var json = eval("("+data+")"); 
var key=data.split(","); 
var aData = []; 
for(var i=0;i<key.length;i++){ 
//以下为根据输入返回搜索结果的模拟效果代码,实际数据由后台返回 
if(key[i]!=""){ 
aData.push(key[i]); 
} 
} 
//将返回的数据传递给实现搜索输入框的输入提示js类 
searchSuggest.dataDisplay(aData); 
} 
}); */ 
//以下为根据输入返回搜索结果的模拟效果代码,实际数据由后台返回 
var aData = []; 
aData.push('<span class="num_right">约100个</span>'+keyword+'返回数据1'); 
aData.push('<span class="num_right">约200个</span>'+keyword+'返回数据2'); 
aData.push('<span class="num_right">约100个</span>'+keyword+'返回数据3'); 
aData.push('<span class="num_right">约50000个</span>'+keyword+'返回数据4'); 
aData.push('<span class="num_right">约1044个</span>'+keyword+'2012是真的'); 
aData.push('<span class="num_right">约100个</span>'+keyword+'2012是假的'); 
aData.push('<span class="num_right">约100个</span>'+keyword+'2012是真的'); 
aData.push('<span class="num_right">约100个</span>'+keyword+'2012是假的'); 
//将返回的数据传递给实现搜索输入框的输入提示js类 
searchSuggest.dataDisplay(aData); 
} 
</script> 
</body> 
</html>
Javascript 相关文章推荐
Add Formatted Text to a Word Document
Jun 15 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
Sep 19 Javascript
javascript的渐进增强与平稳退化浅谈
Nov 12 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
May 15 Javascript
JavaScript驾驭网页-DOM
Mar 24 Javascript
JS简单随机数生成方法
Sep 05 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
Nov 21 Javascript
获取JavaScript异步函数的返回值
Dec 21 Javascript
js 作用域和变量详解
Feb 16 Javascript
Vue.js自定义事件的表单输入组件方法
Mar 08 Javascript
详解JSON和JSONP劫持以及解决方法
Mar 08 Javascript
JS数组去重详情
Nov 07 Javascript
jquery 页面滚动到指定DIV实现代码
Sep 25 #Javascript
js实现两个值相加alert出来精确到指定位
Sep 25 #Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
Sep 25 #Javascript
js读取注册表的键值示例
Sep 25 #Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
Sep 25 #Javascript
简单常用的幻灯片播放实现代码
Sep 25 #Javascript
javascript date格式化示例
Sep 25 #Javascript
You might like
php笔记之:php数组相关函数的使用
2013/04/26 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
使用Node.js处理前端代码文件的编码问题
2016/02/16 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
Python每天必学之bytes字节
2016/01/28 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
项目专员岗位职责
2013/12/04 职场文书
5.1手机促销活动
2014/01/17 职场文书
《木笛》教学反思
2014/03/01 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
承诺函范文
2015/01/21 职场文书
学术会议邀请函
2015/01/30 职场文书
安阳殷墟导游词
2015/02/10 职场文书
团委副书记工作总结
2015/08/14 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS