jQuery Count/Length Typeahead Remote



我有一个文本框,我在其中通过Twitter Typeahead使用自动完成功能,特别是远程示例。

这是我的代码:

var states = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('state'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: getStateUrl + "?query=%QUERY",
wildcard: '%QUERY'
}
});
var sLength = states.length; // this comes back as undefined
$('#StateName').typeahead({
highlight: true
}, {
name: 'states',
display: 'state',
source: states,
limit: 10
}).bind('typeahead:select', function(ev, suggestion) {
$("#StateId").val(suggestion.id);
});

如果您没有在我的代码中看到注释,states.length返回为undefined。 我已经尝试过states.index.datums.length但这也回来了undefined.

如何使用远程推特提前输入获取stateslengthcount

正如@Sai-nihar-nightraiser所说,您正在尝试在收集结果之前设置结果的长度。 像这样尝试:

var sLength;
var states = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('state'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: getStateUrl + "?query=%QUERY",
wildcard: '%QUERY',
filter: function (statesResults){
window.sLength = statesResults.length;
return statesResults;
}
});

sLength 应等于运行提前键入后返回的状态数。 我从这篇文章中得到了信息: 提前输入.js - 显示有更多结果

那是因为我想你的state.length在API调用之前被执行。不过从来没有实施过寻血猎犬!只是猜测它发生在jQuery ajax请求中,当访问它时,我们将不得不处理回调函数中的输出数据,它返回未定义。

相关内容

  • 没有找到相关文章

最新更新