为什么twitter bootstrap的预先不能在这里工作?

时间:2014-06-18 01:55:11

标签: javascript jquery twitter-bootstrap

我正在尝试让typeahead.js在我的项目中工作。我在我的项目中加载了bootstrap(刚刚从bootstrap站点下载了源代码)。查看源代码显示没有提到typeahead,所以我包含了独立的js文件。

当我尝试使用它时,我没有收到任何错误,但它只是不起作用。简单的代码:

<input type="text" class="typeahead" />

var source = ["test1", "test2", "test3", "test4"];

$('.typeahead').typeahead({
    source: source })

jsfiddle:link

我做错了什么? (注意我的js位于jsfiddle的底部)

1 个答案:

答案 0 :(得分:1)

您使用的typeahead.js版本与您调用它的方式不同。

最新版本的typeahead需要可变数量的数据集参数。请参阅我的小提琴的更新版本:http://jsfiddle.net/DTcHh/458/

var source = ["test1", "test2", "test3", "test4"];

function mySource(query, callback){
  srcs = [];
  for(var idx in source){
      var src = source[idx];
      if(src.indexOf(query) !== -1){
        srcs.push({value: src});
      }
  }
  console.log(srcs);
  callback(srcs);
}

$(document).ready(function(){
    var t = $(".typeahead");
    t.typeahead({}, {'source': mySource});
});

对于每个数据集,需要有一个指向函数的source属性。该函数接受查询字符串和回调函数。期望您使用查询字符串执行所需操作,然后使用对象列表调用回调函数,其中每个对象具有映射到要显示的值的value属性。

认为您应该能够在选项中指定{'local': source},但我还没有让它发挥作用。

无论如何,如果你想要旧的API,你必须使用Bootstrap 2的typeahead版本。