【发布时间】:2012-02-06 12:31:35
【问题描述】:
我需要一个 jquery 自动完成功能,它只调用一次服务器然后在本地存储并在 jqgrid 的后续调用中使用返回的数组。它也应该在其他自动完成的网格之外工作; 我的 onload 中有一个 jquery 函数:
$('#text').myAutocomplete({url:'...'});
jqgrid 中的另一个 - 下面的 dataInit 是一个回调,它使用文本框参数以其他方式自动完成/修改 我正在使用 asp.net Web 服务,因此在我的 ajax 调用中使用 msg.d
$('#table').jqGrid({
...,
colModel:[...,
name:'col1',...,dataInit:function(el){
$.myAutocomplete({url:'..',elem:el});
}
...],
...
});
然后在我的自动完成功能中:
(function($){
var returnArray = [];
$.fn.myAutocomplete = function(options){
var element = options.elem || this;
if(returnArray.length === 0){ //checking if the local array is populated or not
$.ajax({ // all other ajax options for asp.net webservice to respond are also set here
...,
url: options.url,
success : function(msg){
returnArray = msg.d;
}
});
}
return element.autocomplete({source:returnArray});
}
})(jQuery);
问题是“文本”上的自动完成功能不起作用 - 我明天将在工作中测试 jqgrid 自动完成功能
【问题讨论】:
-
刚刚意识到我对我的函数的所有调用都使用相同的数组 - 这显然是有缺陷的,因为我需要对不同的 url 进行不同的调用来返回不同的数组
-
chohi ~ 正确,尽管这可能不是您的主要潜在问题。在任何情况下,通过将您的
returnArray声明放入您的$.fn.myAutocomplete正文中,这很容易解决。无论如何,由于我在您的代码中看到了对element.autocomplete的调用,我假设您正在从 jQuery UI 加载自动完成功能?
标签: javascript jquery jquery-plugins autocomplete closures