无法使用typeahead.js,不会显示任何结果

时间:2015-07-31 09:44:28

标签: javascript jquery typeahead.js typeahead twitter-typeahead

我一直试图让typeahead.js工作2天,我拒绝相信应该这么难。到目前为止,没有一个例子可以使用,我一直在弄清楚出了什么问题。

首先,我从这个存储库下载了typeahead.bundle.js文件:

https://github.com/twitter/typeahead.js/tree/master/dist

我的代码如下所示:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Typeahead example</title>

    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    <!-- Optional theme -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
  </head>
  <body>

    <input id="search"/>

  <!-- jQuery -->
  <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
  <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
  <!-- Latest compiled and minified Bootstrap -->
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
  <!-- Latest Typeahead.js -->
  <script src="typeahead.bundle.js"></script>

  <script type="text/javascript">
  var colors = ["red", "blue", "green", "yellow", "brown", "black"];

  $(document).ready(function() {

    $('#search').typeahead({source: colors});
  })

  </script>
  </body>
</html>

请帮我解决这个问题。

编辑:从sakir的回答中,我现在更改了我的Javascript代码以适应版本10的语法,但它仍然没有显示任何建议:< / p>

  <script type="text/javascript">
  var colors = ["red", "blue", "green", "yellow", "brown", "black"];

  $(document).ready(function() {

    $('#search').typeahead({
     highlight: true,
     hint: false
     }, colors);
  });

  </script>

1 个答案:

答案 0 :(得分:0)

我猜您的示例仅适用于typeahead 0.9.x版本。对于10版本,似乎有显着的更改。我可以查看here以获取更多信息。

我使用typeahead 0.9版测试了你的例子,它运行正常。这是正在运行的样本。

http://jsfiddle.net/179yevon/

如果你想使用最新版本的typeahead,你可以选择示例here

你可以看到,从第一个例子开始,source参数接受类似source: substringMatcher(states)的函数。 可能是您可以根据

更改您的代码

<强>更新 使用v.10,你可以做这样的事情。

  var colors = ["red", "blue", "green", "yellow", "brown", "black"];

var colorsource = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.whitespace,
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  // `states` is an array of state names defined in "The Basics"
  local: colors
});

$('#search').typeahead({
  hint: true,
  highlight: true,
  minLength: 1
},
{
  name: 'color',
  source: colorsource
});

这是小提琴手

http://jsfiddle.net/qug5qdnp/

*根据类型来源,血液制度是做什么准备数据源的。 如上所述,source获取函数作为参数和函数期望前面类型的字符串array.source只接受字符串数组,如果不打算使用血统,你需要将它转换为数组的数组