json从动态php函数返回,看起来像
[{"tagid":"1","name":"scandalous"},{"tagid":"2","name":"crime"},{"tagid":"3","name":"entertainment"},{"tagid":"4","name":"finance"}]
文本输入应使用名称字段。 自动填充称为
$(document).on("focus", "#tagfilter", function(event) {
$(this).autocomplete({
source: "/app/processes/tags.php?f=get_json_tags"
});
});
但我无法让自动完成工作
为任何协助而欢呼。
答案 0 :(得分:0)
您可以使用jQuery map
将起始项数组或对象转换为新的项目数组,而不是使用grep
应用输入过滤器。
当前过滤器存储在request
,source
函数参数中。
代码:
$(this).autocomplete({
source: function (request, response) {
var re = $.ui.autocomplete.escapeRegex(request.term);
var matcher = new RegExp("^" + re, "i");
$.getJSON("/app/processes/tags.php?f=get_json_tags", function (data) {
response($.grep(($.map(data, function (v, i) {
return {
label: v.name,
value: v.name
};
})), function (item) {
return matcher.test(item.value);
}))
});
}
});
答案 1 :(得分:0)
请参阅此示例了解json remote datasource:
因此,您的代码应为:
$(this).autocomplete({
source: function( request, response ) {
$.ajax({
url: "/app/processes/tags.php?f=get_json_tags",
dataType: "jsonp",
data: {
q: request.term
},
success: function( data ) {
response( $.map(data, function(v,i) {
return { label: v.name, value:v.name };
})
);
}
});
}//[,
//other: "options",
//may: "be included",
//right: "here" ]
});
答案 2 :(得分:0)
是否可以从2个不同的字段返回值?
例如,现在该示例仅返回“v.name”。有没有办法让自动填充更通用,如果有人输入匹配的年龄,还会返回“v.age”吗?
我不确定如何返回找到的值。
return { label: v.name, value:v.name };
return { label: v.age, value:v.age };