使用Twitter Bootstrap Typeahead处理对象

Cam*_*ron 5 jquery bootstrap-typeahead

我正在使用Bootstrap Typeahead插件,如下所示:

$('#Organisation').typeahead({
            source: function (query, process) {
                return $.get(AppURL + 'Organisations/Manage/SearchByName/',
                {
                    term: query
                },
                function (data) {
                    var results = [];
                    var fullResults = [];
                    $.each(data, function (index, item) {
                        results.push(item.label);
                        fullResults.push({
                            id: item.ID,
                            label: item.label
                        });
                    });

                    return process(results);


                });
            },
            updater: function (selection) {
                $('#OrganisationID').val(selection);
            }
        });
Run Code Online (Sandbox Code Playgroud)

我有两个返回的数组,这是因为Typeahead只需要一个字符串列表而不是一个对象.第二个数组包含label和id.

一旦用户从列表中选择一个项目,我需要从该选择中获取ID,然后使用它插入隐藏字段.但选择将只是名称,因为ID不能通过Typeahead传递.

关于如何解决这个问题的任何想法?

两个返回数组的示例:

结果: ["Organisation 1","Organisation 2"]

fullResults: [{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}]

fre*_*rik 6

在网上搜索了一下后,我找到了这个 HowTo.在它里面他们做你想要的,但没有ajax.

您还应该能够从源函数返回一个对象,但是您需要重新实现typeahead的所有辅助函数.

  • 此方法的唯一问题是它不考虑显示字符串是否不唯一.您将始终获得匹配的第一个结果,无法在列表中选择任何进一步的结果. (2认同)