全国统一服务热线:400-633-9193

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

    脚本之家     2017-08-16    1126

废话不多说,直接上代码


<!DOCTYPE html>

<html>

<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>

    <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>


  分享到:  
0.2229s