两个引导程序类型在同一页面上具有两个不同的源函数

时间:2013-01-01 21:41:38

标签: twitter-bootstrap bootstrap-typeahead

我希望两个不同的文本输入具有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));
        });
    }
});

第一个预先工作正常。但是,第二个,当我开始输入并且选项开始出现时,我单击一个选项,下拉列表只是关闭,没有值插入到输入字段中。

任何人都知道如何让它发挥作用?

1 个答案:

答案 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会保留响应缓存。 (虽然我原以为他们会把缓存绑定到你绑定它的实例上,但是......)