У меня есть элемент управления автозаполнением пользовательского интерфейса jQuery, который запускает запрос Ajax, когда minLength = 3. Проблема заключается в следующем: скажем, я ввел «fic» в качестве начального условия поиска - это нормально.Запрос запускается и результаты возвращаются.Я решаю, что не хочу выбирать какие-либо результаты, а затем снова ввожу тот же поиск снова (fic).На этот раз запрос Ajax не сработал!
Мой код показан ниже:
// ... do request
$("#reportSearch").autocomplete({
delay: 50,
minLength: 3,
source: function(q, add){
$.ajaxSetup ({ cache: false});
$.ajax({
type: "GET",
url: K_URL_REQUEST
Таким образом, обратный вызов «источника» не запускается во втором сценарии, который я описал выше.Похоже, что причиной этого было то, что элемент управления автозаполнения удерживал предыдущий поисковый термин и, поскольку он соответствовал - не запускал поиск:
// Taken from jquery-ui-1.8.4.custom.min.js
if (a.term != a.element.val()) { // *** THE MATCH IS HERE
//console.log("a.term != a.element.val(): "+a.term+", "+a.element.val());
a.selectedItem = null;
a.search(null, c) // *** SEARCH IS TRIGGERED HERE
}
Для того, чтобы он срабатывал каждый раз, я просто сбрасывал поисковый термин на нуль после того, как поиск вернулся.Таким образом, это сработало, как и ожидалось.
Дело в том, что я не понимаю этого поведения.Я бы подумал, что каждый поиск должен быть отличным.Кэширования нет (или не должно быть в любом случае).
Так что, хотя я исправил свою проблему, я чувствую, что что-то здесь упустил.
Любые идеи кто-нибудь?Заранее спасибо!