来自另一个js函数的JQuery自动完成源代码
我有一个Jquery自动完成函数,其源是根据request.term
从另一个函数计算的,所以我无法想出如何设置源属性。
自动完成:
$( "#finder_city" ).autocomplete({ source: function(request){ var searchParam = request.term; init(searchParam); }, minLength: 2, });
我的function:
function init(query) { //lot of code return response;
}
我的函数返回有效数据,如response = [ city1, city2, city3 ];
但自动完成只是启动“加载器图标”,没有任何反应,在日志中没有错误。
任何人都可以说如何从另一个js函数设置源代码?
源函数有两个参数,请求和回调,一旦响应返回,您需要调用回调
$( document ).ready(function() { $( "#finder_city" ).autocomplete({ source: function(request, callback){ var searchParam = request.term; init(searchParam, callback) }, minLength: 2 }); }); function init(query, callback) { ymaps.geocode(query, { results: 5 }).then(function (res) { var response = []; if (res.geoObjects.get(0) == null) { } else if (res.geoObjects.get(1) == null){ response = [ res.geoObjects.get(0).properties.get('text') ]; } else if (res.geoObjects.get(2) == null){ response = [ res.geoObjects.get(0).properties.get('text'), res.geoObjects.get(1).properties.get('text') ]; } else if (res.geoObjects.get(3) == null){ response = [ res.geoObjects.get(0).properties.get('text'), res.geoObjects.get(1).properties.get('text'), res.geoObjects.get(2).properties.get('text') ]; } else if (res.geoObjects.get(4) == null){ response = [ res.geoObjects.get(0).properties.get('text'), res.geoObjects.get(1).properties.get('text'), res.geoObjects.get(2).properties.get('text'), res.geoObjects.get(3).properties.get('text') ]; } else { response = [ res.geoObjects.get(0).properties.get('text'), res.geoObjects.get(1).properties.get('text'), res.geoObjects.get(2).properties.get('text'), res.geoObjects.get(3).properties.get('text'), res.geoObjects.get(4).properties.get('text') ]; } callback(response); }); }
演示: 小提琴
在匿名回调中,您需要返回init(searchParam)
的返回值。
只是改变:
init(searchParam);
至:
return init(searchParam);
例:
source: function (request, response) { // Contains var searchString = request.term, array = []; // OPTIONS array.push('test 1'); array.push('foo'); array.push('var'); response(array); }