Изменение источника данных автозаполнения jquery

Я установил автозаполнение jquery, которое изменяет источник данных в зависимости от ввода в текстовое поле.

После изменения источника данных в jquery он не срабатывает, пока не будет нажата кнопка со стрелкой вверх или вниз.

Я использовал firebug для проверки источника данных и не нашел в нем ничего плохого.

Может ли кто-нибудь показать мне, как отправить клавишу со стрелкой вверх или вниз к элементу управления или решить эту проблему каким-либо другим способом?

Большое спасибо!

изменить: я заменил это на JSON, как показано ниже, но кажется, что запрос приходит в окно предупреждения об ошибке

jQuery (function () {jQuery ("input # autocomplete"). autocomplete ({contentType: 'application / json; charset = utf-8', dataType: 'json', mustMatch: false, limit: 10, minChars: 2,

            select: function (event, ui) {
                AutoCompleteSelectHandler(event, ui)
            }
            ,
            source: function (request, response) {
                jQuery.ajax({
                    url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb",
                    data: {},
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    dataFilter: function (data) { return data; },
                    success: function (data) {
                        alert(data);
                    },
                    error: function (XMLHttpRequest, textStatus,

errorThrown) {предупреждение (textStatus); }}); }});

    });

есть это поле ввода html.

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

edit2: Я внес следующие изменения:

jQuery (function () {jQuery ("input # autocomplete"). autocomplete ({

            minChars: 2,

            select: function (event, ui) {
                AutoCompleteSelectHandler(event, ui)
            }
            ,
            source: function (request, response) {
                jQuery.ajax({
                    url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb",
                    data: '{ Suburb: "' +

jQuery ("# ​​autocomplete"). val () + '"}', dataType:" json ", тип:" POST ", contentType:" application / json; charset = utf-8 ", dataFilter: function (data) {return data.d;}, success: function (data) {alert (data.d);}, error: function (XMLHttpRequest, textStatus, errorThrown) {alert ( textStatus);}});}});

    });

так что оповещение работает нормально. Но jquery не показывает совпадающий список. Как мне это сделать?

РЕДАКТИРОВАТЬ 2:

Мне удалось решить проблему с веб-сервисом. Как настроить ответ, чтобы автозаполнение отображало список соответствующим образом? На данный момент каждый пункт в списке показывает мне полный список пунктов.

т.е.) если я наберу «ab», и если есть 3 совпадения, то он покажет мне один и тот же результат 3 раза в 3 разных строках.

У меня есть настройка jquery, как показано ниже:

jQuery (function () {jQuery ("input # autocomplete"). autocomplete ({

            minChars: 2,

            select: function (event, ui) {
                AutoCompleteSelectHandler(event, ui)
            }
            ,
            source: function (request, response) {
                jQuery.ajax({
                    url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb",
                    data: '{ Suburb: "' + jQuery("#autocomplete").val() + '" }',
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    dataFilter: function (data) { return data; },
                    success: function (data) {

                                                    response($.map(data.d, function (item) {
                                                        return {
                                                            value: data.d
                                                        }
                                                                                }))


                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert(textStatus);
                    }
                });
            }
        });

Любая помощь будет принята с благодарностью, большое спасибо!


person rlee923    schedule 23.06.2011    source источник
comment
Ваше описание практически не имеет смысла (для меня). Например, After datasource on the jquery changes, it doesn't fire until press up or down arrow button. Что такое datasource on jquery? Что заставляет его измениться? Что it не срабатывает? Без совместного использования кода помочь вам так же невозможно, как помочь тому, кто говорит, что я использую автозаполнение, но оно не работает, пожалуйста, помогите.   -  person davin    schedule 23.06.2011
comment
Я использую запрос на xmlhttpobject для получения списка со страницы, поэтому источник данных представляет собой просто массив строк. если я изменяю источник данных, список автозаполнения не отображается. Однако, когда я нажимаю клавишу со стрелкой вверх или вниз, список отображается. Возможно, мне стоит попробовать использовать json с настраиваемым источником данных.   -  person rlee923    schedule 23.06.2011
comment
По-прежнему неясно и, конечно, не воспроизводимо. Если вы настроите jsfiddle.net, это значительно упростит жизнь каждому и увеличит шансы на решение вашей проблемы.   -  person davin    schedule 23.06.2011
comment
эй, я не знал, что есть такой инструмент. позвольте мне настроить это и сообщить вам.   -  person rlee923    schedule 23.06.2011
comment
Вы, вероятно, не можете увидеть результат, потому что я не создал страницу общедоступного источника данных. Итак, в основном я написал код для обнаружения нажатия клавиш в текстовом поле и подождал 1 секунду, если в тексте нет изменений, тогда javascript будет использовать ключевое слово для поиска со страницы. И я сбрасываю источник данных с результатом поиска.   -  person rlee923    schedule 24.06.2011
comment
Кажется, что encap цитаты stackoverflow не работает, поскольку я думаю, поэтому я помещаю код в jsfiddle. jsfiddle.net/rlee923/BQGDa   -  person rlee923    schedule 24.06.2011


Ответы (1)


У меня он работает, но я не уверен в одном: элемент становится просто массивом строк, а не объектом JSON. Я пытался разобрать каждый элемент как JSON, но, похоже, не работает.

Вот рабочий jquery json с комбинациями jquery веб-сервисов.

jQuery (function () {jQuery ("input # autocomplete"). autocomplete ({

            minChars: 2,

            select: function (event, ui) {
                AutoCompleteSelectHandler(event, ui)
            }
            ,
            source: function (request, response) {
                jQuery.ajax({
                    url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb",
                    data: '{ Suburb: "' + jQuery("#autocomplete").val() + '" }',
                    dataType: "json",
                    type: "POST",
                    minChars: 2,
                    contentType: "application/json; charset=utf-8",
                    dataFilter: function (data) { return data; },
                    success: function (data) {
                        var obj = jQuery.parseJSON(data.d);
                        response($.map(obj, function (item) {
                            var item_obj = jQuery.parseJSON(item);
                            return {
                                value: item[1]


                            }
                        }))


                    },
                    //                        parse: function (data) {
                    //                            var parsed = [];
                    //                            data = data.d;

                    //                            for (var i = 0; i < data.length; i++) {
                    //                                parsed[parsed.length] = {
                    //                                    data: data[i],
                    //                                    value: data[i].value,
                    //                                    result: data[i].value
                    //                                };
                    //                            }

                    //                            return parsed;
                    //                        },
                    //                        formatItem: function (item) {
                    //                            return item.value;
                    //                        },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert(textStatus);
                    }
                });
            }
        });



    });
person rlee923    schedule 27.06.2011