HTML:
<input type="text" id="shop-id">
JS:
$(document).ready(function(){
$( "#shop-id" ).autocomplete({
source: "/ticket/get_sids",
select: function(event, ui){
//...
}
});
});
有一个奇怪的自动完成问题。如果我用这样的静态变量声明源
var data = ["0200","0032"];
$( "#shop-id" ).autocomplete({
source: "/ticket/get_sids"
});
一切都像预期的那样。
但是使用动态源url时,自动完成功能似乎无法过滤搜索。就像无论我输入什么作为搜索文字一样,自动填充功能都会打开整个源,而无需进行过滤。例如。我输入“ g”,它将打开0200、0032,但它不应该打开,因为“ g”与源中的任何内容都不匹配。
动态源返回纯json,例如:
["0200","0032"]
。这是一个PHP页面:return new Response(json_encode($data));
哪个返回
["0200","0032"]
在浏览器窗口中。
环境:jQuery 1.7.2 jQuery-Ui 1.8.2
最佳答案
您丢失了将用于发送回过滤器值的data参数……如果有任何意义的话。因此,您需要在返回响应数据之前实施某种形式的服务器端过滤
“我输入一个“ g”,它会打开0200、0032,但它不应该打开,因为“ g”与源中的任何内容都不匹配。”
$(document).ready(function(){
$( "#shop-id" ).autocomplete({
source: "/ticket/get_sids",
select: function(event, ui){
//...
},
data: { term: request.term } //"term" could be anything, based on parameters your server side method expects
//...
})
});
我已经回答了一个与此类似的问题。希望这可以帮助? https://stackoverflow.com/a/11930525/1105314