Автозаполнение пользовательского интерфейса jQuery не работает после функции загрузки jQuery

0

Я пытаюсь использовать функцию автозаполнения jQuery UI, и он отлично работает, пока я не заменил данные функцией jQuery load(). После этого ничего не работает - есть полная тишина.

Мой html-код выглядит так:

<div class="ui-widget">
         <label for="search">Search: </label>
         <input id="search">
</div>

И мой код js:

function enableAutocomplete(){
$( "#search" ).autocomplete({
    source: function( request, response ) {
        $.getJSON( "/Controller/search", {
            term: request.term
        }, response );
    },
    minLength: 2,
    select: function( event, ui ) {
        (...something going on here, doesn't matter...)

    }
});
}

}

После того, как load() вернется успешно, я вызываю enableAutocomplete(), чтобы связать еще раз событие автозаполнения с моим выбранным элементом. Я где-то читал на этом форуме, что я должен это сделать. Но с тех пор ничего не происходит. Автозаполнение никогда не вызывается после ввода. Я отлаживал его на консоли и записывал все на временной шкале (инструменты Chrome dev), и, как я уже сказал, полная тишина. Кто-нибудь знает, почему?

  • 0
    Не могли бы вы показать больше своего кода? например, когда вы вызываете enableAutocomplete?
  • 0
    привет, спасибо за ответ :) Я вызываю enableAutocomplete () дважды: один раз в $ (function () {}) и второй раз в успешной части функции load ().
Показать ещё 2 комментария
Теги:
autocomplete

1 ответ

0

Не могли бы вы попробовать

    function _debugResponse(respData,txt,xhr){console.log('Debug server response'); console.log(respData);}

function enableAutocomplete() {
  console.log('enableAutocomplete called');
  $("#search").autocomplete({
    source:    function (request, response) {
     console.log('autocomplete.source method called');
     $.getJSON("/Controller/search", { term: request.term }, _debugResponse );
    },
    minLength: 2,
    select:    function (event, ui) { console.log(event) }
  });
}                            

enableAutocomplete();

и опубликуйте, что вы получаете на dev-консоли?

  • 0
    Привет, я попробовал это, и вот что показано в консоли: Перед загрузкой (): enableAutocomplete вызвал functions.js: 134 autocomplete.source метод с именем functions.js: 150 Отладка ответа сервера functions.js: 518 [Object] functions. js: 518 и после load (): enableAutocomplete вызывается. Итак, еще раз - метод источника никогда не вызывается: /
  • 0
    Я сделал пару незначительных изменений в коде выше. 1) метод источника будет вызываться после того, как вы введете хотя бы 2 символа, именно тогда вы проверите сетевую консоль, чтобы увидеть, что вызывается. 2) Вы обрабатываете термин на стороне сервера? 3) Вы возвращаете объект JSON? 4) Можете ли вы сказать мне, что вы получаете на сетевой консоли для вызова?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню