5

我希望两个不同的文本输入具有预先输入功能,每个输入都有不同的源函数。例如,一个获取 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));
        });
    }
});

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

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

4

1 回答 1

4

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

$('#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));
        });
    }
});

只要它们不同,我在代码中如何称呼它们并不重要。这也很有意义,因为预先输入会保留响应的缓存。(虽然我原以为他们只是将缓存绑定到您要绑定的实例,但是......)

于 2014-03-04T20:26:03.930 回答