自定义Coffeescript中的自动完成下拉列表

时间:2015-10-01 10:01:32

标签: javascript jquery coffeescript

我正在使用Coffeescript。我在autocomplete方法中的源代码返回一个哈希(关联数组),我想在下拉列表中显示一些元素。我在下面解释你

首先,我用这个方法调用了我的coffeescript

jQuery ->
    $("#searchbox").autocomplete
        source: "/searches"

回复是["St James's Hotel","Criterion Restaurant"]左,因此下拉列表正确显示了这些标签。但现在我有回应

[
{"id":"ChIJD_XW2NcEdkgRS6oeZ95kXGo","label":"St James's Hotel"},
{"id":"ChIJYRe8_tMEdkgRr_J6bdITC1U","label":"Criterion Restaurant"}
]

因此,在控制台中显示上述响应时,不会显示下拉列表。我只想在下拉列表中显示标签。我现在有下面的咖啡因:

jQuery ->
    $("#searchbox").autocomplete
        source: "/searches"
        create: (event,ui) ->
         ui.item.label
        select: (event,ui) ->
            console.dir ui
            console.dir ui.item.id

任何帮助/指导都将欣赏

更新 根据官方文档,如果您的对象具有“标签”和“值”属性,jQuery将知道如何使用它。我也尝试过这个东西(没有涉及创建选项的意思)。谢谢你的方式,我正在根据那个更新我的问题

1 个答案:

答案 0 :(得分:0)

根据official doc,如果您的对象有"标签"和"价值"属性,jQuery会知道如何使用它。那么你可以用源格式中的 value 更改 id 吗?如果没有,您必须为自动填充功能提供一个功能,并构建一个标签数组来显示。

我不太了解jQuery,但它应该是这样的:

function getLabels(request, response) {
    // do ajax request to get the hash
    ajax.get('/searches?term=' + request, function(data) {
        data = JSON.parse(data);

        return data.map(function(obj) {
            return obj['label'];
        })
    });
}