创建一个基本的自动完成建议列表

Posted

技术标签:

【中文标题】创建一个基本的自动完成建议列表【英文标题】:Create a basic auto-complete suggestion list 【发布时间】:2014-01-14 21:50:33 【问题描述】:

如何在搜索框下方创建一个自动完成的建议列表:

    用户可以使用键盘Down & Up 键在它们之间导航吗?

    用户可以使用Esc按钮关闭建议列表吗?

    当用户按下键盘DownUp键时,被选中的建议会填充到搜索框内吗?

这是我当前的 index.php 代码:

<?php
include 'script_suggestion.php';
include 'script_close_suggestion_box.php';
?>
<html>
    <head>
        <title>
            Brandon's Search Engine
        </title>
        <style type="text/css">
            #suggestion 
                border: 1px solid black;
                visibility: hidden;
                position: absolute;
                background-color: white;
                z-index: 10;
            
            #suggestion a 
                font-size: 12pt;
                color: black;
                text-decoration: none;
                display: block;
                width: 648px;
                height: auto;
                text-align: left;
                padding: 2px;
            
            #suggestion a:hover 
                background-color: #dddddd;
                width: 644px;
                padding: 2px;
            
        </style>
    </head>
    <body>
        <form method="GET" action="search.php" name="q">
            <table align="center">
                <tr>
                    <td>
                        <h1><center>Brandon's Search Engine</center></h1>
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        <input type="text" name="q" style="height: 27px; width: 650px; padding: 2px" placeholder="Search Now"
                               onkeyup="getSuggestion(this.value)" autocomplete="off" onblur="closeBox()"/>

                        <div id="suggestion" style="width: 648px">
                        </div>
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        <input type="submit" value="Search" style="height: auto; width: 60px; padding: 2px" />
                        <input type="reset" value="Clear" onclick="closeBox()" style="height: auto; width: 50px; padding: 2px" />
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        Can't find your site? <br /> Insert <a href="insert.php">here</a>.
                    </td>
                </tr>
            </table>
            <input type="hidden" name="page" value="1" />
        </form>
    </body>
</html>

提前致谢。

【问题讨论】:

jqueryui.com/autocomplete 我已经尝试过了,但我不知道如何在我的代码中使用它。 向我们展示您的尝试,我们可以从中提出建议 pastebin.com/Ri8715Gc @Rob 我给你我的建议代码。你现在可以帮我吗? 【参考方案1】:

使用 Jquery UI AutoComplete,这里是示例代码

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery UI Autocomplete - Default functionality</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script>
  $(function() 

  var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "javascript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];
    $( "#tags" ).autocomplete(
      source: availableTags
    );
  );
  </script>
</head>
<body>

<div class="ui-widget">
  <label for="tags">Tags: </label>
  <input id="tags">
</div>


</body>
</html>

示例取自 - http://jqueryui.com/autocomplete/

    /**
         This code below loads the autocomplete for your input field,
         where in "#tags" is the id of your element where this should
         be displayed in and "availableTags" is the array of list of
         possible values to be shown in autocomplete list
     */
     $( "#tags" ).autocomplete(
      source: availableTags
    );

如果您想通过 PHP 动态获取存储在数据库中的数据,您可能需要使用http://jqueryui.com/autocomplete/#remote

【讨论】:

以上是关于创建一个基本的自动完成建议列表的主要内容,如果未能解决你的问题,请参考以下文章

聚合物纸输入 html 数据列表自动完成/建议列表

devbridge ajax 自动完成不会更新建议列表

Material-ui 自动完成过滤列表

始终显示自动完成列表,即使搜索不匹配

从自动完成列表提交查询,而无需点击提交按钮

Swift中的自动完成搜索列表问题