从php脚本获取结果后,将触发JQuery自动完成密钥更新事件

时间:2012-09-22 17:31:36

标签: javascript jquery jquery-ui autocomplete

我使用以下代码将简单文本框设为自动完成框

var sourceURLRide = "index.php?page=getRideAndParksJson&type=rides&keyword=";
$("#fav_rides_select").autocomplete({
            source: sourceURLRide,
            minLength: 1,
            delay: 0
});

但我需要在fav_rides_select上触发的每个关键事件上更改源,即更改源URL,然后必须从url获取结果。但这不起作用。我正在使用以下代码将源与keyup事件同步:

$("#fav_rides_select").keyup(function(){
            $("#fav_rides_select").autocomplete("option","source",sourceURLRide + encodeURIComponent($("#fav_rides_select").attr("value")) );
});

注意:我正在使用keyup事件将关键字传递给php脚本,因此只会出现相关结果。

2 个答案:

答案 0 :(得分:1)

嗯,你没有在你的例子中传递一个对象。试试我的代码(类似于您的第一个代码段):

$("#fav_rides_select").autocomplete({ source: sourceURLRide + encodeURIComponent($("#fav_rides_select").attr("value")) });

答案 1 :(得分:1)

如果文档准备好之后它不是很小,你应该加载整个JSON,或者你可以加载你的JSON子集,但只有当它真的是大数据时才会加载。

这是一个很好的Article,关于如何为大数据记住当前查询的状态。

如果您不是Google,则可以使用以下代码:

$(document).ready(function(){
  var data = $.getJSON('index.php?page=getRideAndParksJson&type=rides',function(data){
    $('#fav_rides_select').autocomplete(
      source: data,
      minLength: 1,
      delay: 0);
  });
});