我正在使用jQuery ui-complete库,该库通过get请求调用端点以填充建议的autors列表:
$("#author-name").autocomplete({
source: "/authors/get.json",
minLength: 5,
select: function(event, ui) {
event.preventDefault();
$("#author-name").val(ui.item.label);
$("#author-id").val(ui.item.value);
}
});
问题是回复的格式,它包装在索引数组中,如下所示:
{
"reply": [
{
"value": 9,
"label": "Joe Bloggs"
},
]
}
是否可以通过回复对象告诉响应,例如:
select: function(event, ui.reply) {
我已经阅读了库中的api文档,但是找不到解决方案。
答案 0 :(得分:1)
source
期望有一个数组,因此您将不得不调整为其分配的内容。
在下面的示例中,我简单地创建了一个新函数来获取数据,然后访问{ {1}}数组,这就是我传递给自动完成reply
source
$(document).ready(function() {
function getResponse() {
var response = {
"reply": [{
"value": 9,
"label": "Joe Bloggs"
},
{
"value": 10,
"label": "foo"
},
]
}; // in your case: read data from /authors/get.json
return response.reply;
}
$("#tags").autocomplete({
source: getResponse(),
select: function(event, ui) {
event.preventDefault();
console.log(ui.item.value);
console.log(ui.item.label);
}
});
});
答案 1 :(得分:0)
如果使用ECMAScript 6,则可以利用对象分解:
select: function(event, { reply }) {
reply
现在将是您可以通过ui.reply
访问的内容。
答案 2 :(得分:0)
您也可以通过这种方式使用
select: function(event, ui) {
event.preventDefault();
var reply = ui.reply;
//And Because it is an array you should use index on it.
$("#author-name").val(reply[0].label);
$("#author-id").val(reply[0].value);
}