автоматичното довършване не е функция

Тествахме функцията за автоматично довършване на Jquery UI (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