#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 запускается только при нажатии клавиши, вот что происходит с вами. Это функциональность, для которой он предназначен. Если вы хотите это настроить. Вы должны написать свою собственную логику.