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中Get和Set访问器的实现代码
Sep 19 Javascript
IE 当eval遇上function的处理
Aug 09 Javascript
运算符&amp;&amp;的三个不同层次
Apr 07 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
Apr 26 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
Jan 28 Javascript
Jquery中CSS选择器用法分析
Feb 10 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
Jan 22 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
Apr 13 Javascript
JavaScript的this关键字的理解
Jun 18 Javascript
vue.js实现表格合并示例代码
Nov 30 Javascript
VUEX-action可以修改state吗
Nov 19 Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 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
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
Python字典操作简明总结
2015/04/13 Python
python利用不到一百行代码实现一个小siri
2017/03/02 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
python tornado微信开发入门代码
2018/08/24 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
python 解决函数返回return的问题
2020/12/05 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
某同学的自我鉴定范文
2013/12/26 职场文书
大学生个人学年总结
2015/02/15 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python