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


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 相关文章推荐
单击按钮显示隐藏子菜单经典案例
Jan 04 Javascript
jquery调取json数据实现省市级联的方法
Jan 29 Javascript
Javascript实现跑马灯效果的简单实例
May 31 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
js插件dropload上拉下滑加载数据实例解析
Jul 27 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
Mar 26 Javascript
Vue.Draggable拖拽功能的配置使用方法
Jul 29 Javascript
JS删除String里某个字符的方法
Jan 06 Javascript
详解微信小程序图片地扯转base64解决方案
Aug 18 Javascript
highcharts.js数据绑定方式代码实例
Nov 13 Javascript
javascript递归函数定义和用法示例分析
Jul 22 Javascript
vue.js Router中嵌套路由的实用示例
Jun 27 Vue.js
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
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
vue弹窗组件使用方法
2018/04/28 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
构建Python包的五个简单准则简介
2015/06/15 Python
python开发之list操作实例分析
2016/02/22 Python
python字符串连接方法分析
2016/04/12 Python
django缓存配置的几种方法详解
2018/07/16 Python
Python实现的简单计算器功能详解
2018/08/25 Python
python实现计算器功能
2019/10/31 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
建龙钢铁面试总结
2014/04/15 面试题
民族团结先进集体事迹材料
2014/05/22 职场文书
幼儿教师师德承诺书
2014/05/23 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
清明扫墓感想
2015/08/11 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript