我希望两个不同的文本输入具有typeahead,每个输入都有不同的源函数。例如,一个获取first_names,另一个获取last_names。
以下是它的外观和不起作用:
$('#first_name').typeahead({
source: function (query, process) {
$.get('/users/typeahead-first-name', { term: query }, function (data) {
return process(JSON.parse(data));
});
}
});
$('#last_name').typeahead({
source: function (query, process) {
$.get('/users/typeahead-last-name', { term: query }, function (data) {
return process(JSON.parse(data));
});
}
});
第一个预先工作正常。但是,第二个,当我开始输入并且选项开始出现时,我单击一个选项,下拉列表只是关闭,没有值插入到输入字段中。
任何人都知道如何让它发挥作用?
答案 0 :(得分:3)
这对你来说可能有点晚了,但我在自己的应用中遇到了同样的问题。解决方案是添加“名称”属性,如下所示:
$('#first_name').typeahead({
name: 'first_name',
source: function (query, process) {
$.get('/users/typeahead-first-name', { term: query }, function (data) {
return process(JSON.parse(data));
});
}
});
$('#last_name').typeahead({
name: 'last_name',
source: function (query, process) {
$.get('/users/typeahead-last-name', { term: query }, function (data) {
return process(JSON.parse(data));
});
}
});
只要它们不同,我在代码中调用它们并不重要。它也有一定道理,因为typeahead会保留响应缓存。 (虽然我原以为他们会把缓存绑定到你绑定它的实例上,但是......)