• 模糊匹配仿百度自动下拉提示


    实际项目中,我们可以把数据获取改成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>
  • 相关阅读:
    怎么制作html5网站页面让它适应电脑和手机的尺寸
    js面向对象 下
    认识面向对象及代码示例
    Math 对象
    js事件驱动函数
    模拟js中注册表单验证
    敏感词过滤 简单 模仿
    模仿随机验证码-简单效果
    字符串方法(函数)
    js中字符串概念
  • 原文地址:https://www.cnblogs.com/woodk/p/5592209.html
Copyright © 2020-2023  润新知