Как отобразить виджеты автозаполнения Jquery UI в методе автозаполнения ()?

#jquery #autocomplete #jquery-autocomplete #jquery-ui-autocomplete

#jquery #автозаполнение #jquery-автозаполнение #jquery-ui-autocomplete

Вопрос:

Я надеюсь, что кто-нибудь сможет помочь с этим,
мне действительно сложно заставить автозаполнение jQueryUI работать с вызовом $.ajax ({}) в asp.net приложение.
Я могу заставить его выполнить вызов ajax, получаю ответ от сервиса и список местоположений.
но список автозаполнения по-прежнему не отображается, когда я нажимаю клавишу со стрелкой вниз, на странице отображается список местоположений.
Это должно быть отображено сразу после получения списка местоположений из веб-метода. Как это могло быть возможно?

Я использую автозаполнение с сайта jquery: http://jqueryui.com/demos/autocomplete /

Пример кода

 function GetCitiesLikeList(objcity) {    
var cities = "";
        $.ajax({
            type: "POST",
            url: http://localhost/testweb/location.asmx/Getlocations,
            data: "{ City : '"   objcity   "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.d != null amp;amp; msg.d != "") {
                    cities = "";
                    cities = msg.d;
                    $("#citilist").autocomplete({
                        source: cities
                    });
                }
                else
                    $("#citilist").attr("autocomplete", "off")
            },
            error: function (xhr, ajaxOptions, thrownError) { return false; }
        }); 
}
  

Ответ №1:

Я нашел другой способ запустить функцию автозаполнения jQuery UI, не вводя текст в поле:

 $('#field').autocomplete({
    source: '/path/to/data',
    minLength: 0
});
$('#button').click(function() {
    $('#field').autocomplete('search', '')
});
  

Отправка аргумента ‘search’ запускает функцию поиска. Второй аргумент — это «термин», отправляемый обработчику данных по адресу /path/to/data.

Комментарии:

1. да, у тебя тоже все хорошо.. Спасибо.

Ответ №2:

Чтобы отобразить список, просто вызовите $('#citilist').trigger("keydown"); Это заставляет его думать, что вы вводите ввод citilist, и запускает публикацию ajax.

Комментарии:

1. Спасибо @ ariel, это вызовет событие и получение результатов, но у меня возникает другая проблема, когда я нажимаю клавишу, а затем получаю результаты предыдущего запроса в списке автозаполнения. например: я пытаюсь выполнить поиск ‘los ang’, затем он получает все местоположения, связанные с ‘los ang *’, затем я удалил все значения и пытаюсь написать ‘mexi’, затем он показал мне предыдущие результаты.. как удалить из него предыдущие результаты..

2. я думаю, вам нужно вызвать GetCitiesLikeList() перед запуском.

3. Я полагаю, что это работает следующим образом -> GetCitiesLikeList -> Trigger -> success. Итак, при запуске список еще не вернулся. Итак, вы должны запустить метод success.

4. @ariel Я вызвал метод успеха .. like => success: function (сообщение) { if (msg.d!= null amp;amp; msg.d!= «») { cities = «»; cities = msg.d; $ («#citilist»).autocomplete({источник: города}); $(‘#citilist’).trigger(«keydown»); } else $ («#citilist»).attr («автозаполнение», «выкл.») },

Ответ №3:

Автозаполнение Jquery запускается только при нажатии клавиши, вот что происходит с вами. Это функциональность, для которой он предназначен. Если вы хотите это настроить. Вы должны написать свою собственную логику.