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"
});
一切都像预期的那样。
但是使用动态源网址,自动填充似乎不会过滤搜索。无论我输入什么作为搜索文本,自动完成都会打开整个源而不进行过滤。例如。我键入了一个&#34; g&#34;它打开0200,0032,但它不应该因为&#34; g&#34;与源中的任何内容都不匹配。
动态源返回纯json,如:["0200","0032"]
。它是一个php页面:
return new Response(json_encode($data));
返回
["0200","0032"]
在浏览器窗口中。
环境:jQuery 1.7.2 jQuery-Ui 1.8.2
答案 0 :(得分:1)
你错过了你将用来发回过滤器值的数据参数......如果这有意义的话。因此,您需要在返回响应数据之前实现某种形式的服务器端过滤
“我键入”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
答案 1 :(得分:1)
使用String时,Autocomplete插件希望该字符串指向将返回JSON数据的URL资源。它可以位于同一主机上,也可以位于不同的主机上(必须提供JSONP)。自动完成插件不会过滤结果,而是将请求参数“term”添加到URL中,服务器端脚本应该使用该参数来过滤结果.