jQuery实现的仿百度,仿谷歌搜索下拉框效果示例


Posted in Javascript onDecember 30, 2016

本文实例讲述了jQuery实现的仿百度,仿谷歌搜索下拉框效果。分享给大家供大家参考,具体如下:

运行效果图如下:

jQuery实现的仿百度,仿谷歌搜索下拉框效果示例

完整实例代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>仿百度搜索下拉框,放搜索下拉框,仿谷歌搜索下拉框</title>
<META content="仿谷歌百度搜索下来内容显示,可以通过ajax下拉也可以调用数据库数据,目前只是按照js调用了点内容,参考下面代码进行自行修改" name="Description">
<META content="谷歌,百度,下拉框,仿搜索下拉,下拉框搜索,搜索下拉内容" name="keywords">
<style type="text/css">
body{
  font-size:14px;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<script src="jquery-1.7.2.min.js"></script>
<script language="javascript">
<!--
///开始定义全局内容
var fouce_li_num = -1;///默认没有选择任何下拉内容
var width_ = 300;//这里设置的是搜索框的宽度,目的为了与下面的列表宽度相同
var li_color = "#fff";//默认的下拉背景颜色
var li_color_ = "#CCC";//当下拉选项获取焦点后背景颜色
$(function(){
 $("input[name=key]").keyup(function(event){
  var keycode = event.keyCode;
  if(delkeycode(keycode))return;
  var key_ = $(this).val();//获取搜索值
  var top_ = $(this).offset().top;//获搜索框的顶部位移
  var left_ = $(this).offset().left;//获取搜索框的左边位移
  if(keycode==13){//enter search
    if(fouce_li_num>=0){
    $(this).val($.trim($("#foraspcn >li:eq("+fouce_li_num+")").text()));
    fouce_li_num=-1;
    }else{
      /////当没有选中下拉表内容时 则提交form 这里可以自定义提交你的搜索
    }
    $("#foraspcn").hide();
   }else if(keycode==40){//单击键盘向下按键
    fouce_li_num++;
    var li_allnum = $("#foraspcn >li").css("background-color",li_color).size();
    if(fouce_li_num>=li_allnum&&li_allnum!=0){//当下拉选择不为空时
    fouce_li_num=0;
    }else if(li_allnum==0){fouce_li_num--;return;}
    $("#foraspcn >li:eq("+fouce_li_num+")").css("background-color",li_color_);
   }else if(keycode==38){//点击键盘向上按键
    fouce_li_num--;
    var li_allnum = $("#foraspcn >li").css("background-color",li_color).size();
    if(fouce_li_num<0&&li_allnum!=0){//当下拉选择不为空时
    fouce_li_num=li_allnum-1;
    }else if(li_allnum==0){fouce_li_num++;return;}
    $("#foraspcn >li:eq("+fouce_li_num+")").css("background-color",li_color_);
   }else{//进行数据查询,显示查询结果
    fouce_li_num=-1;
    $("#foraspcn").empty();
    ///ajax调用 这里使用的是 测试内容
    ajax_demo();
    //ajax_getdata(key_);//如果使用ajax去前面的demo和//
    //赋值完毕后进行显示
    $("#foraspcn").show().css({"top":top_+22,"left":left_});
   }
  });
  //当焦点从搜索框内离开则,隐藏层
  $("body").click(function(){ $("#foraspcn").hide(); });
  ///创建隐藏的div,用来显示搜索下的内容
  $("body").append("<div id='foraspcn'></div>");
  $("#foraspcn").css({"width":""+width_+"px","position":"absolute","z-index":"999","list-style":"none","border":"solid #E4E4E4 1px","display":"none"});//这里设置列下拉层的样式,默认为隐藏的
});
//定义非开始运行函数
function delkeycode(keycode){//去除了不必要的按键反应,当比如删除,f1 f2等按键时,则返回
 var array = new Array();
 array =[8,16,19,20,27,33,34,35,36,45,46,91,112,113,114,115,116,117,118,119,120,121,122,123,145,192];
 for(i=0;i<array.length;i++){
   if(keycode==array[i]){return true;break;}
   }
  return false;
}
//这是一个测试案例
function ajax_demo(){
  var data_array = ["网站制作学习网","网站制作","3water.com"];
  for(i=0;i<data_array.length;i++){//这里进行数据附加 返回数据格式为 关键词数组
    $("#foraspcn").append("<li style='width:"+width_+"px;'>"+data_array[i]+"</li>");
     }
  $("#foraspcn >li").mouseover(function(){$(this).css("background-color",li_color_);});
  $("#foraspcn >li").mouseout(function(){$(this).css("background-color",li_color);});
  $("#foraspcn >li").click(function(){$("input[name=key]").val($.trim($(this).text()));$(this).parent().hide();});
}
////////////////这里是正式的ajax调用
function ajax_getdata(key){
 $.post(
   "ajax_tag_search.php",
  {"key":key},//ajax 的post不能提交中文提交,在动作页面进行获取后需要解码,注意字符格式,然后搜索后返回
  function(data){//返回格式是json数据,至少是个数组也可自定义,然后再这里进行操作
    data_array = eval("("+data+")");
    for(i=0;i<data_array.length;i++)//这里进行数据附加 返回数据格式为 关键词数组
    $("#foraspcn").append("<li style='width:"+width_+"px;'>"+data_array[i]+"</li>");
    $("#foraspcn >li").mouseover(function(){$(this).css("background-color",li_color_);});
    $("#foraspcn >li").mouseout(function(){$(this).css("background-color",li_color);});
    $("#foraspcn >li").click(function(){$("input[name=key]").val($.trim($(this).text()));$(this).parent().hide();});
   }
  );
}
-->
</script>
<body>
仿百度百度搜索下拉<input type="text" name="key" size="40" maxlength="40">
</body>
</html>

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
May 12 Javascript
JavaScript核心语法总结(推荐)
Jun 02 Javascript
require.js配合插件text.js实现最简单的单页应用程序
Jul 12 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
Dec 08 Javascript
vue双向绑定简要分析
Mar 23 Javascript
手把手教你搭建ES6的开发运行环境
Jul 11 Javascript
React如何利用相对于根目录进行引用组件详解
Oct 09 Javascript
webpack4 + react 搭建多页面应用示例
Aug 03 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
Aug 17 Javascript
Vue组件中的data必须是一个function的原因浅析
Sep 03 Javascript
layui 上传图片 返回图片地址的方法
Sep 26 Javascript
微信小程序自定义modal弹窗组件的方法详解
Dec 20 Javascript
原生JS实现图片左右轮播
Dec 30 #Javascript
零基础轻松学JavaScript闭包
Dec 30 #Javascript
Html5+jQuery+CSS制作相册小记录
Dec 30 #Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
Dec 30 #Javascript
bootstrap表格分页实例讲解
Dec 30 #Javascript
js中数组的常用方法小结
Dec 30 #Javascript
原生js实现可爱糖果数字时间特效
Dec 30 #Javascript
You might like
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
JS重要知识点小结
2011/11/06 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
pandas通过索引进行排序的示例
2018/11/16 Python
python绘制简单彩虹图
2018/11/19 Python
python中time库的实例使用方法
2019/10/31 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
python 成功引入包但无法正常调用的解决
2020/03/09 Python
django配置app中的静态文件步骤
2020/03/27 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
传媒专业推荐信范文
2013/11/23 职场文书
财务会计应届生求职信
2013/11/24 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
年终工作总结范文
2019/06/20 职场文书
Python实现滑雪小游戏
2021/09/25 Python
git中cherry-pick命令的使用教程
2022/06/25 Servers