手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >仿百度的关键词匹配搜索示例
仿百度的关键词匹配搜索示例
摘要:复制代码代码如下:关键词匹配搜索仿百度body,ul,li{margin:0;padding:0;}body{font-size:12px;...

复制代码 代码如下:

<!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>

<div>

<span>关键词匹配搜索</span>

<input type="text" id="gover_search_key" placeholder="请输入关键词直接搜索" />

<button type="submit">搜索</button>

<div 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>约100个</span>'+keyword+'返回数据1');

aData.push('<span>约200个</span>'+keyword+'返回数据2');

aData.push('<span>约100个</span>'+keyword+'返回数据3');

aData.push('<span>约50000个</span>'+keyword+'返回数据4');

aData.push('<span>约1044个</span>'+keyword+'2012是真的');

aData.push('<span>约100个</span>'+keyword+'2012是假的');

aData.push('<span>约100个</span>'+keyword+'2012是真的');

aData.push('<span>约100个</span>'+keyword+'2012是假的');

//将返回的数据传递给实现搜索输入框的输入提示js类

searchSuggest.dataDisplay(aData);

}

</script>

</body>

</html>

【仿百度的关键词匹配搜索示例】相关文章:

javascript实现在网页任意处点左键弹出隐藏菜单的方法

jQuery的基本概念与高级编程

javascript常用方法总结

Angular发布1.5正式版,专注于向Angular 2的过渡

JS+CSS实现的拖动分页效果实例

静态的动态续篇之来点XML

Webpack 实现 AngularJS 的延迟加载

js+html5实现canvas绘制圆形图案的方法

JavaScript对表格或元素按文本,数字或日期排序的方法

javascript函数特点实例

精品推荐
分类导航