zoukankan      html  css  js  c++  java
  • 模糊匹配仿百度自动下拉提示

    实际项目中,我们可以把数据获取改成ajax动态获取,在 getContent()中

    <!DOCTYPE>
    <html>
    
    <head>
      <title>js/jQuery实现类似百度搜索功能</title>
      <meta name="Author" content="Michael">
      <meta name="Keywords" content="js/jQuery实现类似百度搜索功能">
      <meta name="Description" content="js/jQuery实现类似百度搜索功能,可用键盘控制">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
      <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
      <style type="text/css">
      #container {
        position: absolute;
        left: 50%;
        top: 40%;
      }
      
      #content {
        float: left;
        position: relative;
        right: 50%;
      }
      
      input {
        border: 0;
        width: 288px;
        height: 30px;
        font-size: 16px;
        padding: 0 5px;
        line-height: 30px;
      }
      
      .item {
        padding: 3px 5px;
        cursor: pointer;
      }
      
      .addbg {
        background: #87A900;
      }
      
      .first {
        border: solid #87A900 2px;
        width: 300px;
      }
      
      #append {
        border: solid #87A900 2px;
        border-top: 0;
        display: none;
      }
      </style>
    </head>
    
    <body>
      <div id="container">
        <div id="content">
          <div class="first">
            <input id="kw" onKeyup="getContent(this);" />
          </div>
          <div id="append"></div>
        </div>
      </div>
      <script type="text/javascript">
        var data = [
          "你好,我是Michael",
          "你是谁",
          "你最好啦",
          "你最珍贵",
          "你是我最好的朋友",
          "你画我猜",
          "你是笨蛋",
          "你懂得",
          "你为我着迷",
          "你是我的眼"
        ];
      $(document).ready(function() {
        $(document).keydown(function(e) {
          e = e || window.event;
          var keycode = e.which ? e.which : e.keyCode;
          if (keycode == 38) {
            if (jQuery.trim($("#append").html()) == "") {
              return;
            }
            movePrev();
          } else if (keycode == 40) {
            if (jQuery.trim($("#append").html()) == "") {
              return;
            }
            $("#kw").blur();
            if ($(".item").hasClass("addbg")) {
              moveNext();
            } else {
              $(".item").removeClass('addbg').eq(0).addClass('addbg');
            }
    
          } else if (keycode == 13) {
            dojob();
          }
        });
    
        var movePrev = function() {
          $("#kw").blur();
          var index = $(".addbg").prevAll().length;
          if (index == 0) {
            $(".item").removeClass('addbg').eq($(".item").length - 1).addClass('addbg');
          } else {
            $(".item").removeClass('addbg').eq(index - 1).addClass('addbg');
          }
        }
    
        var moveNext = function() {
          var index = $(".addbg").prevAll().length;
          if (index == $(".item").length - 1) {
            $(".item").removeClass('addbg').eq(0).addClass('addbg');
          } else {
            $(".item").removeClass('addbg').eq(index + 1).addClass('addbg');
          }
    
        }
    
        var dojob = function() {
          $("#kw").blur();
          var value = $(".addbg").text();
          $("#kw").val(value);
          $("#append").hide().html("");
        }
      });
    
      function getContent(obj) {
        var kw = jQuery.trim($(obj).val());
        if (kw == "") {
          $("#append").hide().html("");
          return false;
        }
        var html = "";
        for (var i = 0; i < data.length; i++) {
          if (data[i].indexOf(kw) >= 0) {
            html = html + "<div class='item' onmouseenter='getFocus(this)' onClick='getCon(this);'>" + data[i] + "</div>"
          }
        }
        if (html != "") {
          $("#append").show().html(html);
        } else {
          $("#append").hide().html("");
        }
      }
    
      function getFocus(obj) {
        $(".item").removeClass("addbg");
        $(obj).addClass("addbg");
      }
    
      function getCon(obj) {
        var value = $(obj).text();
        $("#kw").val(value);
        $("#append").hide().html("");
      }
      </script>
    </body>
    
    </html>
  • 相关阅读:
    What is EJB
    Redis连接工具类
    MyBatis单列工厂的实现
    TCP和UDP的区别(Socket)
    webSocket协议与Socket的区别
    OSI七层模型
    Http协议和HTTPS协议
    Cookie和Session
    Request库使用response.text返回乱码问题
    Selenium元素定位问题
  • 原文地址:https://www.cnblogs.com/woodk/p/5592209.html
Copyright © 2011-2022 走看看