Может кто-нибудь объяснить мне, как работают функции обратного вызова для JQuery Autocomplete - PullRequest
0 голосов
/ 28 февраля 2011

Я пытаюсь заставить автозаполнение JQuery работать с формой, в которой вы ищете имя объекта, и все поля объекта заполняются с выбранным результатом.

У меня было автозаполнение, работающее хорошо, когда япросто нужно вернуть строку, но теперь мне нужно вернуть более сложный объект.

Я пытался сделать это с помощью json и строки, разделенной трубами.Строка, возвращающаяся из ответа, в порядке, но автозаполнение не показывает никаких результатов.

Может кто-нибудь сказать мне, какой обратный вызов я должен использовать, чтобы разделить мои результаты на массив строк и как я затем получаю доступ и форматирую этиСтроки для их отображения?

Кроме того, каковы параметры для различных функций обратного вызова, например, parse, formatItem, formatMatch, formatResult и т. д. Я действительно запутался, потому что почти каждая статья, которую я прочитал, делает этоиначе никто не объясняет, что на самом деле происходит.

Почему я не могу отладить обратный вызов в firebug?Код никогда не достигает моих точек останова

Вот мой JavaScript

 $(document).ready(


      function ()
        {
            $("input#Venue_Name").autocomplete
            (
// data comes back in format VenueId|Name|AddressLine1|AddressLine2|City|PostCode|Country
                '<%= Url.Action("FindVenuesComplex","Ajax", new {@area=""}) %>',
                {
                    mustMatch: false,
                parse: function (data)
                {
                    return data.split('|');
                },
                formatItem: function (data)
                {
                    return data[1];
                },
                formatMatch: function (data)
                {

                    return data[1];
                },
                formatResult: function (data)
                {

                    return data[1];
                }
            }
                                ).result
                                (
                                    function (event, data, formatted)
                                    {
                                        if (data)
                                        {
                                            $("input#Venue_AddressLine1").val(data[2]);
                                        }
                                    }
                    );
    }
);

1 Ответ

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

Я понял, что происходит, и подумал, что поделюсь, если у кого-то возникнет такая же проблема.

Я использовал плагин JQuery Autocomplete, который теперь заменен на Jquery.UI.AutoComplete, который теперь является частью основного JQuery.UI, и ожидаемые параметры отличаются.

Я сейчас использую более новую версию.

http://theycallmemrjames.blogspot.com/2010/03/jquery-autocomplete-with-aspnet-mvc.html очень помогло объяснить, как правильно использовать версию JQuery.UI

...