我一直在使用twitter bootstrap typeahead js来完成我的一个项目。我根据自己的需要进行了配置,并且在一个月左右的时间里工作正常。现在突然间,我的代码无效,我最近还没有更新任何代码。我完全糊涂了。以下是我的代码。
var colleges = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote : {
url : url + '/autocomplete?query=%QUERY',
ajax : {
beforeSend: function(jqXhr, settings){
$('.search-button').find('.fa').removeClass('fa-search').addClass('fa-refresh');
},
complete : function(){
$('.search-button').find('.fa').removeClass('fa-refresh').addClass('fa-search');
}
}
}
});
colleges.initialize();
$('#colleges').typeahead({
hint: true,
highlight: true,
minLength: 1
},
{
name: 'colleges',
displayKey: 'name',
slug : 'slug',
source: colleges.ttAdapter()
});
$('#colleges').bind('typeahead:selected', function(obj, datum, name) {
window.location = url +'/'+ datum.slug;
});
$('.form').submit(function(e){
if($('#colleges').val().length < 2){
e.preventDefault();
}
});
当我输入时,查询参数没有传递任何内容。网址就像 www.example.com/autocomplete?query=%QUERY而不是用户键入的实际查询。我也没有在控制台中得到任何错误。
有什么建议吗?
答案 0 :(得分:3)
我有同样的问题。似乎他们制作了新版本。据我所知完全改写。所以你需要添加一行,所有这些都应该有效:
var colleges = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote : {
url : url + '/autocomplete?query=%QUERY',
wildcard: '%QUERY',**
ajax : {
beforeSend: function(jqXhr, settings){
$('.search-button').find('.fa').removeClass('fa-search').addClass('fa-refresh');
},
complete : function(){
$('.search-button').find('.fa').removeClass('fa-refresh').addClass('fa-search');
}
}
}
});
将wildcard: '%QUERY',
添加到猎犬的代码中,并且一切都应该很好