jQuery UI Автозаполнение несовместимо с deferred.promise ()? - PullRequest
0 голосов
/ 23 марта 2011

Моя цель - создать элемент автозаполнения, который извлекается из базы данных SQL на основе текущего ввода.Это необходимо, потому что количество элементов, в которых выполняется поиск, намного превышает максимальную емкость десериализатора json.

У меня это работает с плагином smartAutoComplete, но я хочу объединить и использовать плагин автозаполнения пользовательского интерфейса jQuery.Похоже, что плагин вызывает ._renderMenu до того, как моя функция-источник ничего не возвращает, и к телу страницы ничего не добавляется.Я исправил это с помощью deferred.promise () при использовании smartAutoComplete, но jQuery UI, похоже, не нравится это решение.Какие-нибудь советы?Спасибо!

$("input#punch_box").autocomplete({
    source: function (request, response) {
        var dfd = new jQuery.Deferred();
        var resArr = [];
        MyAjax({
            url: '../GetMemberFiltered',
            data: { search_string: request.term },
            success: function (data, status) {
                $(data).each(function (indx, result) {
                    resArr.push({ value: result.first_name + " " + result.last_name + " " + result.email,
                        member_id: result.member_id
                    });
                });
                dfd.resolve(resArr);
            }
        });
        return dfd.promise();
    },
    delay: 200
});

function monkeyPatchAutocomplete() {
    var oldFn = $.ui.autocomplete.prototype._renderItem;

    $.ui.autocomplete.prototype._renderItem = function (ul, item) {
        alert(item.value);
        return $("<li></li>")
            .data("item.autocomplete", item)
            .append("<a>" + item.value + "</a>")
            .appendTo(ul);
    };
};

1 Ответ

0 голосов
/ 23 марта 2011

Мне удалось собрать работоспособное решение из кода, найденного здесь: Автозаполнение Jquery не показывает результаты

Отложенные предметы это круто, но это не правильный способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...