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 相关文章推荐
jMessageBox 基于jQuery的窗口插件
Dec 09 Javascript
ExtJS下grid的一些属性说明
Dec 13 Javascript
jquery监控数据是否变化(修正版)
Apr 12 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
May 30 Javascript
jquery ajax 简单范例(界面+后台)
Nov 19 Javascript
Ajax提交与传统表单提交的区别说明
Feb 07 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
完美解决JS文件页面加载时的阻塞问题
Dec 18 Javascript
vue  directive定义全局和局部指令及指令简写
Nov 20 Javascript
详解JavaScript中的强制类型转换
Apr 15 Javascript
深入分析jQuery.one() 函数
Jun 03 jQuery
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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
php的urlencode()URL编码函数浅析
2011/08/09 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
python访问纯真IP数据库的代码
2011/05/19 Python
Python Tkinter简单布局实例教程
2014/09/03 Python
Python中暂存上传图片的方法
2015/02/18 Python
Python性能提升之延迟初始化
2016/12/04 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
一份报关员的职业规划范文
2014/01/08 职场文书
大专生求职信
2014/06/29 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书