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

10-04 22:39
查看更多