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


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 相关文章推荐
JavaScript的单例模式 (singleton in Javascript)
Jun 11 Javascript
利用腾讯的ip地址库做ip物理地址定位
Jul 24 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
Jan 02 Javascript
JavaScript实现标题栏文字轮播效果代码
Oct 24 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
Dec 15 Javascript
jQuery图片轮播插件——前端开发必看
May 31 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 Javascript
vue 自定义全局方法,在组件里面的使用介绍
Feb 28 Javascript
Angular ng-animate和ng-cookies用法详解
Apr 18 Javascript
小程序和web画三角形实现解析
Sep 02 Javascript
ionic2.0双击返回键退出应用
Sep 17 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
Aug 10 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安装攻略:常见问题解答(二)
2006/10/09 PHP
php strlen mb_strlen计算中英文混排字符串长度
2009/07/10 PHP
PHP系统命令函数使用分析
2013/07/05 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
javascript事件问题
2009/09/05 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
使用Python开发windows GUI程序入门实例
2014/10/23 Python
Python比较两个图片相似度的方法
2015/03/13 Python
Python OpenCV获取视频的方法
2018/02/28 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
自主招生自荐信范文
2013/12/04 职场文书
小学五年级学生评语
2014/04/22 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
工作收入证明范本
2015/06/12 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
公司开业主持词
2015/07/02 职场文书