我正在使用 Coffeescript 。我在自动完成方法中的源返回给我一个哈希(关联数组),我想在下拉列表中显示一些元素。我在下面详细解释一下
首先,我在我的 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"}
]
因此,当上述响应在控制台中可见时,不会进行下拉菜单。我只想在下拉列表中显示标签。我现在有如下所示的 CoffeeScript :
jQuery ->
$("#searchbox").autocomplete
source: "/searches"
create: (event,ui) ->
ui.item.label
select: (event,ui) ->
console.dir ui
console.dir ui.item.id
任何帮助/指导将不胜感激
更新 根据官方文档,如果你的对象有“label”和“value”属性,jQuery就会知道如何使用它。我也尝试过这个事情(意味着不涉及创建选项)。顺便说一句,谢谢,我正在据此更新我的问题
最佳答案
根据official doc ,如果你的对象有“label”和“value”属性,jQuery就会知道如何使用它。那么你可以在源格式中通过值更改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'];
})
});
}
关于javascript - 在 Coffeescript 中自定义自动完成下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32884710/