автозаполнение не является функцией

Мы протестировали функцию автозаполнения пользовательского интерфейса Jquery (jquery-ui-1.8.10.custom.min.js) на простой HTML-странице, которая работала.

Затем мы копируем тот же код в пользовательский элемент управления Asp.net, и он перестает работать. Ошибка Javascript гласит: «$searchBox.autocomplete не является функцией».

Этот пользовательский элемент управления используется в проекте Asp.net Sitefinity 3.7. На странице у него есть ScriptManager. Не знаю, что еще добавить...

Кто-нибудь знает, что происходит?

Изменить:

<script src="/js/jquery-1.5.min.js" type="text/javascript"></script>
<script src="/js/jquery-ui-1.8.10.custom.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        var termTemplate = "<span class='ui-autocomplete-term'>%s</span>";

        $('input#searchInput').autocomplete({
            source: ['johannesburg z', 'johannesburg x', 'johannesburg v', 'johannesburg b', 'johannesburg a', 'johannesburg q', 'johannesburg u', 'johannesburg y', 'johannesburg o', 'johannesburg p'],
            minLength: 3,
            open: function (e, ui) {

                var 
                acData = $(this).data('autocomplete'),
                styledTerm = termTemplate.replace('%s', acData.term);

                acData
                .menu
                .element
                .find('a')
                .each(function () {
                    var me = $(this);
                    me.html(me.text().replace(acData.term, styledTerm));
                });

            }
        });
    });
</script>
<div class="outerSearchBox">
    <div class="searchFieldWrapper">
        <input id="searchInput" type="text" class="searchField" /><a class="searchButton">SEARCH
        </a>
        <div class="searchSugContainer">

Спасибо.


person Jacques    schedule 02.03.2011    source источник
comment
Я нашел свой ответ. Я загружал библиотеку jQuery дважды. stackoverflow.com/questions/19591155/   -  person Orin    schedule 30.05.2014


Ответы (5)


Эта ошибка обычно означает, что jquery или плагин еще не загружены. Убедитесь, что ваш вызов функции не срабатывает до загрузки документа:

$(function(){
    var $searchBox = $('#mysearchBox');
    $searchBox.autocomplete(...);
});

Также проверьте правильность пути к файлам javascript. Firebug или инструменты разработчика Google Chrome полезны для проверки обеих этих проблем.

person Phil    schedule 02.03.2011
comment
Я подтвердил с помощью Firebug, что файл загружается и порядок правильный. JQuery, JQuery UI, затем я использую автозаполнение. - person Jacques; 02.03.2011
comment
Шанс, что вы могли бы пересмотреть проблему? - person Jacques; 04.03.2011

Возможно:

  1. Порядок загрузки jquery.js.
  2. Дубликат jquery.js включается на той же странице.
person Ramnath    schedule 06.10.2011
comment
У меня было такое же сообщение при создании нового основного приложения .Net, я добавил ссылки Jquery/JQueryUI вверху файла _Layout.cshtml, но оказалось, что библиотека JQuery по умолчанию добавлялась внизу страницы после тело страницы было отрисовано. Я прокомментировал это, и это сработало нормально - person Nick; 21.11.2019

Возможно, попробуйте использовать для теста метод jQuery.noConflict(). В основном это просто заставляет вас использовать другой псевдоним для jQuery. Это сработало для меня в SF4.3.

var j = jQuery.noConflict();
// Do something with jQuery
j("div p").hide();
// Do something with another library's $()
$("content").style.display = 'none';
person Patrik Affentranger    schedule 13.02.2012

У меня была эта проблема, и происходило то, что мой файл jQuery загружался дважды. Примерно так было у меня в голове:

<script src="assets/js/jquery.min.js"></script>
<script src="js_css/jquery-ui.min.js" ></script>

А потом у меня был вызов AJAX, который загружал больше частей моего документа, и был еще один:

<script src="assets/js/jquery.min.js"></script>

script в моих результатах AJAX, и я отправил свои результаты $.hmtl() в свой документ. Делая это, мы в значительной степени переопределяем все переменные, которые jquery-ui.min.js изменили или использовали в своих интересах.

person Jermel    schedule 05.08.2015

Это вызвано конфликтом с собственным использованием jQuery Sitefinity.

Если вы переместите ссылки на скрипт для jQuery в нижнюю часть страницы перед закрывающим тегом формы. Это решит проблему в Sitefinity 4.0, но я подозреваю, что это также решит эту проблему в Sitefinity 3.7.

person Al Harding    schedule 17.06.2011