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 相关文章推荐
js中设置元素class的三种方法小结
Aug 28 Javascript
浏览器的JavaScript引擎的识别方法
Oct 20 Javascript
多种方法实现JS动态添加事件
Nov 01 Javascript
javascript:void(0)是什么意思示例介绍
Nov 17 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
jQuery实现一个简单的验证码功能
Jun 26 jQuery
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
Mar 05 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
Oct 11 Javascript
详解Vue用cmd创建项目
Feb 12 Javascript
详解jquery和vue对比
Apr 16 jQuery
解决VueCil代理本地proxytable无效报错404的问题
Nov 07 Javascript
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
原生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
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
Angular2使用jQuery的方法教程
2017/05/28 jQuery
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
python中enumerate函数用法实例分析
2015/05/20 Python
Python批量更改文件名的实现方法
2017/10/29 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
一份python入门应该看的学习资料
2018/04/11 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
.net面试题
2016/09/17 面试题
党员组织关系介绍信
2014/02/13 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书
SQL 聚合、分组和排序
2021/11/11 MySQL
MongoDB支持的数据类型
2022/04/11 MongoDB