Соответствующий код находится в webapp.js
Автозаполнение вызывается в основном обычным способом, но функция автозаполнения позже расширяется для выполнения дополнительной обработки
function init_apps_autocomplete() {
$(".fn_autocomplete").each(function () {var a = 207;if ($(this).parents("#module_iWantTo").length > 0 || $(this).parents("#modal_iWantTo").length > 0) {a = 182;}$(this).autocomplete(API_AUTOCOMPLETE, {minChars: 3, width: a, matchContains: false, autoFill: false, captureUsage: true, formatItem: function (d, c, b) {return d[2] + (" " + d[3] + " " + d[1]);}, formatMatch: function (d, c, b) {return d[2] + (" " + d[1]);}, formatResult: function (b) {return b[2] + (" " + b[1]);}, onSelection: function () {$(".fn_autocomplete").parents("form").find("select option:first").attr("selected", true);}, max: 10});});
...
}
Кэширование достигается путем расширения функции автозаполнения следующим образом:
(function (a) {a.fn.extend({autocomplete: function (b, c) {.....}});}(jQuery));
Внутри этого jQuery.fn.extend()
затем выполняется отдельный jQuery.extend()
для создания нового объекта автозаполнения в jQuery.Этот объект содержит много дополнительной обработки, включая некоторое управление кешем, которое, скорее всего, то, что вы ищете.
Код был минимизирован до такой степени, что за ним трудно следовать, и я не работалточно, каким образом выполняется этот процесс кеширования, но, надеюсь, это даст вам старт.