预先在同一页面上输入两个引导程序,并带有两个不同的源函数

sha*_*sol 5 twitter-bootstrap bootstrap-typeahead

我希望两个不同的文本输入具有预输入功能,每个输入都有不同的源函数。为了举例,一个获取名字,另一个获取姓氏。

这是它的外观,它不起作用:

$('#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));
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

第一次输入就可以了。但是,第二个,当我开始键入并且选项开始出现时,然后单击一个选项,下拉列表仅关闭并且没有值插入到输入字段中。

有人知道如何使它工作吗?

ker*_*son 4

这可能有点晚来帮助你,但我只是在我自己的应用程序中遇到了同样的问题。解决方案是添加“name”属性,如下所示:

$('#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));
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

我在代码中如何称呼它们并不重要,只要它们不同即可。这也有一定道理,因为 typeahead 保留了响应的缓存。(虽然我原以为他们只是将缓存绑定到您要绑定到的实例,但是......)