【问题标题】:Customize autocomplete dropdown in Coffeescript在 Coffeescript 中自定义自动完成下拉菜单
【发布时间】:2015-10-01 18:25:03
【问题描述】:

我正在使用 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 就会知道如何使用它。我也尝试过那件事(意味着不涉及创建选项)。顺便谢谢,我正在根据这个更新我的问题

【问题讨论】:

    标签: javascript jquery coffeescript


    【解决方案1】:

    根据official doc,如果你的对象有“label”和“value”属性,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'];
            })
        });
    }
    

    【讨论】:

    • 是的,亲爱的,我知道这就是为什么我要问这个问题,我也尝试过那个东西(意味着不涉及创建选项)。顺便谢谢,我正在根据这个更新我的问题
    • 好的,更新了我的答案以提供提供程序功能的示例。
    • 亲爱的我使用的是咖啡脚本而不是 jquery
    猜你喜欢
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2018-04-27
    相关资源
    最近更新 更多