JQuery UI AutoComplete实现无法正常工作

时间:2013-04-13 05:07:36

标签: jquery html5 jquery-ui css3 autocomplete

我正在尝试实现JQuery UI提供的自动完成功能,我想知道如何通过提供源代码来实现这一点:

  <script>
  $(function() {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL"
    ];
    $( "#tags" ).autocomplete({
      source: availableTags
    });
  });
  </script>

进入我的script.js文件。在我的.html文件中,我有:

    <link rel="stylesheet" type="text/css" href="stylesheet.css">
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
    <script type="text/javascript" src="script.js"></script>

其中script.js是我的.js文件。我试过把它放在我的.js文件中:

$(document).ready(function() {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL"
    ];
    $( "#tags" ).autocomplete({
       source: availableTags
    });
});

这在我的.html文件中:

<form class="ui-widget" name="phoneForm">
    <label for="tags">Tags: </label>
    <input id="tags" name="phoneItem" placeholder="Add a Phone"/>
</form>

但这不起作用。任何人都可以帮助我解决我做错了什么并指出我的写作方向?谢谢!

5 个答案:

答案 0 :(得分:2)

你有没有试过这个:

<html>

<head>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    <script>
        $(function() {
            var availableTags = [
                "United States",
                "France",
                "Germany",
                "China",
                "Australia",
                "England",
                "Saouth Korea",
                "India"
            ];
            $("#tags").autocomplete({
                source: availableTags
            });
        });
    </script>
</head>

<body>
    <label for="tags">Tags: </label>
    <input id="tags" placeholder="Enter Some Text…">
</body>

</html>

你可以在这里试试: demo

答案 1 :(得分:0)

请确保不要在.js文件中包含HTML元素。 (取<script> ... </script>出)。 确保将script.js放在与HTML文件相同的文件夹目录中。

现在位于 JavaScript (script.js):

// First line is a short for $(document).ready(function(){ ... });
    $(function() { 
        var availableTags = [
          "ActionScript",
          "AppleScript",
          "Asp",
          "BASIC",
          "C",
          "C++",
          "Clojure",
          "COBOL"
        ];

        $( "#tags" ).autocomplete({
          source: availableTags
        });

    });

HTML

<!DOCTYPE HTML>
<html>
    <head>
        <title></title>

        <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.js"></script>
        <script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
        <script type="text/javascript" src="script.js"></script>

        <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css">

    </head>

    <body>
        <form>
            Autocompleted field: <input id="tags" type="text"  placeholder="Fill me" />
        </form>
    </body>

</html>

请注意,在HTML输入元素中我们有id="tags",在JavaScript中我们使用$("#tags")来指出该HTML元素。

现在你应该被设定!

答案 2 :(得分:0)

以下是jQuery UI的基本设置,http://jsfiddle.net/steelywing/bZP9A/

的index.html

<html>
<head>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css">
</head>
<body>
<label for="tags">Tags: </label>
<input id="tags" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<script src="auto.js"></script>
</body>
</html>

auto.js

$(document).ready(function() {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL"
    ];
    $( "#tags" ).autocomplete({
       source: availableTags
    });
});

答案 3 :(得分:0)

所以事实证明我所拥有的代码100%正常工作,原因是不起作用是因为我试图实现的其他代码。我希望能够单击一个按钮,将自动完成UI中的字符串添加到页面上的列表中,所以我尝试这样做:

$(document).ready(function() {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL"
    ];
    $( "#tags" ).autocomplete({
       source: availableTags
    });

    $("#addButton").click(function() {
        var toAdd = $("input[name=phoneItem]").val();
        $("#currentList").append("<div class='item'>" + toAdd + </div>);
    });
});

这不仅不起作用,而且导致自动完成和我的.js文件中的其他所有内容都无法正常工作。任何关于为什么会出现这种情况的想法都会有所帮助,再次感谢大家!

答案 4 :(得分:0)

您在结束标记周围缺少引号:

$("#currentList").append("<div class='item'>" + toAdd + </div>);

应该是:

$("#currentList").append("<div class='item'>" + toAdd + "</div>");