Что не так с этим автозаполнением кода (JQuery-UI AutoComplete) - PullRequest
0 голосов
/ 09 декабря 2011
$("#Auto").autocomplete({
minLength: 4,
type: 'GET',
source: function (request, response) {
    var term = request.term;
    if (term in cache) {
        response(cache[term]);
        return;
    }
    var url = '<%=Url.Action("AutoComplete", "Thing", new {area = "Admin"}) %>' + "?terms=" + request.term;
    lastXhr = $.getJSON(url, request, function (data, status, xhr) {
        cache[term] = data;
        if (xhr === lastXhr) {
            response(data);
        }
    });
}
})
    .data("autocomplete")._renderItem = function (ul, item) {
          return $("<li></li>")
.data("item.autocomplete", item)
    .append("<a> Thingy1: " + item.Prop1 + " Thingy2: " + item.Prop2 + "<br>" + "</a>")
    .appendTo(ul);
      };

Предположим, что #Auto, Prop1 и Prop2 существуют, и существует контроллер под названием Thing.Это работает на другой странице, но по какой-то причине я получаю эту ошибку на странице:

$("#Auto").autocomplete({minLength: 4, type: "GET", source: function (request, response);var term = request.term;if (term in cache) {response(cache[term]);return;}var url = '<%=Url.Action("AutoComplete", "Thing", new {area = "Admin"}) %>' + "?terms=" + request.term;lastXhr = $.getJSON(url, request, function (data, status, xhr) {cache[term] = data;if (xhr === lastXhr) {response(data);}});}}).data("autocomplete") is undefined

У меня загружены следующие файлы:

jquery-ui-1.8.2.custom.min.js
jquery-1.4.2.min.js
jquery.autocomplete.pack.js
jquery.ajaxQueue.js
jquery.bgiframe.min.js
thickbox-compressed.js
jquery-ui-1.8.2.custom.css
jquery-require.1.1.packed.js

плюс некоторые другие пользовательские вещи.

Что-то мне не хватает, или у меня слишком много файлов в комплекте?

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Прежде всего, поможет очистка вашего кода (который выглядит лениво вырезанным и вставленным) и объяснение того, что вы пытаетесь сделать.

Однако на первый взгляд я вижу, что ваша ошибка говорит:

.data ("автозаполнение") не определено

Это означает, что на странице не существует элементов с именем "автозаполнение".Попробуйте изменить

.data("autocomplete")

на

.data("#Auto")

, если вы пытаетесь сохранить данные, содержащиеся в элементе управления автозаполнением, для последующего использования.

0 голосов
/ 11 февраля 2013

Диспрозий не так, не Терри.Вот исходная ссылка на изменение: http://jqueryui.com/upgrade-guide/1.10/#removed-data-fallbacks-for-widget-names

- теперь диалоговое окно ui-dialog или uiDialog, автозаполнение теперь ui-автозаполнение и т. Д.

0 голосов
/ 23 января 2013

Боюсь, что ответ Терри неверен.Ваш код не является селектором элементов.Функция data используется для извлечения объекта данных, который был связан с элементом HTML.В вашем случае вы извлекаете данные, связанные с элементом с идентификатором Auto.

var data = $("#Auto").data("autocomplete");
// data is now an object stored by the autocomplete plugin.

Похоже, ваша проблема подразумевает, что данные с ключом autocomplete не могут быть найдены.Я не уверен, как это могло произойти, если ваш скрипт автозаполнения не выполняет свою работу.

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