js模拟百度模糊搜索的实例


Posted in Javascript onAugust 04, 2017

废话不多说,直接上代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    *{
      margin:0;
      padding:0;
    }
    input{
      display:block;
      list-style:none;
    }
    html,body{
      color:#000;
      font-size:14px;
      font-family:'微软雅黑';
    }
    .box{
      margin:50px auto;
      width:300px;
    }
    .box input{
      padding:0 10px;
      width:278px;
      height:30px;
      border:1px solid green;
    }
    .box ul{
      display:none;
      border:1px solid green;
      border-top:none;
    }
    .box ul li{
      list-style:none;
      padding:0 10px;
      height:30px;
      line-height:30px;
      cursor:pointer;
    }
    .box ul li:hover{
      background:#eee;
    }
  </style>
</head>
<body>
  <div class='box'>
    <input type="text" id='searchInp'/>
    <ul id='searchBox'>
      <li>1111</li>
      <li>2222</li>
      <li>3333</li>
      <li>4444</li>
    </ul>
  </div>
  <script src='jquery.min.js'></script>
  <script>
    var searchModule = (function(){
      var $searchInp = $('#searchInp'),
        $searchBox = $('#searchBox');

      //向百度的服务器发送JSONP请求,把数据绑定到容器当中
      function bindHTML(){
        var searchKey = $searchInp.val();

        function callback(data){
          data = data['g'];
          var str = '';
          $.each(data,function(index,item){
            if(index<=3){
              str += '<li>'+item+'</li>'
            }
          })
          $searchBox.html(str).stop().slideDown(300);
        }

        $.ajax({
          url:"https://sp0.baidu.com/5a1Fazu8AA54nxGKo9WTAnF6hhy/su?wd="+searchKey,
          dataType:"jsonp",
          jsonp:'cb',
          success:callback

        })
      }

      //事件绑定和模块的入口
      function init(){
        //文本框获取焦点或者输入内容,判断当前文本框中是否有内容,有内容绑定数据,没有内容隐藏展示框
        $searchInp.on("focus keyup",function(){
          var val = $(this).val();
          if(val.length>0){
            bindHTML();
            return;
          }
          $searchBox.stop().slideUp(300);
        }).on('blur',function(){
          window.setTimeout(function(){
            $searchBox.stop().slideUp(300);
          },3000)
        })

        //给展示框中的li绑定方法
        $searchBox.on('click',function(e){
          var tar = e.target,
            tarTag = tar.tagName.toUpperCase(),
            $tar = $(tar);
          if(tarTag==="LI"){
            $searchInp.val($tar.html());
            $(this).stop().slideUp(300);
          }
        })

      }

      return {
        init:init
      }

    })()
    searchModule.init();
  </script>
</body>
</html>

以上这篇js模拟百度模糊搜索的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript效率调优经验
Jun 04 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
Mar 07 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
Dec 19 Javascript
jquery悬浮提示框完整实例
Jan 13 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
Aug 27 Javascript
利用浮层使select不可选的实现方法
Dec 03 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
Jan 22 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
Aug 04 Javascript
vue学习教程之带你一步步详细解析vue-cli
Dec 26 Javascript
深入理解JS的事件绑定、事件流模型
May 13 Javascript
浅谈super-vuex使用体验
Jun 25 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
Aug 04 #Javascript
addeventlistener监听scroll跟touch(实例讲解)
Aug 04 #Javascript
原生js jquery ajax请求以及jsonp的调用方法
Aug 04 #jQuery
Angular2环境搭建具体操作步骤(推荐)
Aug 04 #Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
Aug 03 #Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 #Javascript
vue 2.0封装model组件的方法
Aug 03 #Javascript
You might like
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
php 获取本机外网/公网IP的代码
2010/05/09 PHP
PHP代码优化的53个细节
2014/03/03 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
ie支持function.bind()方法实现代码
2012/12/27 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
使用cx_freeze把python打包exe示例
2014/01/24 Python
9种python web 程序的部署方式小结
2014/06/30 Python
python实现按任意键继续执行程序
2016/12/30 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
基于python指定包的安装路径方法
2018/10/27 Python
Python requests模块实例用法
2019/02/11 Python
美国著名手表网站:Timepiece
2017/11/15 全球购物
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
数据库面试要点基本概念
2013/10/31 面试题
实习教师自我鉴定
2013/09/27 职场文书
个人贷款承诺书
2014/03/28 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
会计岗位说明书
2014/07/29 职场文书
审计班子对照检查材料
2014/08/27 职场文书
工作证明英文模板
2014/10/21 职场文书
三方协议书
2015/01/27 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
公司员工管理制度
2015/08/04 职场文书
《藏戏》教学反思
2016/02/23 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL