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 相关文章推荐
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
Aug 01 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
Feb 16 Javascript
js仿淘宝和百度文库的评分功能
May 15 Javascript
jQuery表单事件实例代码分享
Aug 18 Javascript
微信小程序 生命周期详解
Oct 12 Javascript
JS实现拖拽的方法分析
Dec 20 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
Jan 11 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
Sep 19 Javascript
vue-router实现tab标签页(单页面)详解
Oct 17 Javascript
JavaScript函数绑定用法实例分析
Nov 14 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
Mar 15 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
世界收音机发展史
2021/03/01 无线电
PHP4与PHP5的时间格式问题
2008/02/17 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
金智子午JAVA面试题
2015/09/04 面试题
迟到检讨书5000字
2014/01/31 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
公务员诚信承诺书
2014/05/26 职场文书
营业员岗位职责范本
2015/04/14 职场文书
Python机器学习之逻辑回归
2021/05/11 Python
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技