it-roy-ru.com

.autocomplete не является функцией Error

ниже мой код

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

И мой HTML-код

<div class="ui-widget">
<input name="searcharea" class="selectarea" id="searcharea" type="text" value="" placeholder="Area">
</div>

И моя функция

<script>
$(function(){
    $( "#searcharea" ).autocomplete({
        source: "suggestions.php"
    });
    $( "#searchcat" ).autocomplete({
        source: "suggestions1.php"
    });
});
</script>

Я включил эту страницу в отдельный файл с поисковым кодом моего веб-сайта и вставил ее на разные страницы. На моей странице указателя она предлагает значения из исходных файлов, но на других страницах она дает мне опечатку в строке

$( "#searcharea" ).autocomplete({

Ссылка на мой сайт: http://www.jodhpuryp.in/

Это источник моего автозаполнения box http://api.jqueryui.com/autocomplete/

Кто-нибудь может сказать мне, почему я получаю эту ошибку на других страницах моего сайта, когда он работает на главной странице. Любая помощь приветствуется. Спасибо

25
user2454340

Обнаружил проблему, я включил другой файл jquery для моего переводчика Google, они конфликтовали друг с другом и в результате не загружали функцию автозаполнения.

37
user2454340

Похоже, автозаполнение вызывается до того, как библиотека, которая определяет его, действительно загружена - имеет ли это смысл?

Если ваш сценарий встроенный, а не ссылочный, переместите его в конец страницы. Или (мой предпочтительный вариант) поместите скрипт во внешний файл .js, а затем сослаться на него:

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script src="yourNewJSFile"></script>

Правка: если вы экспортируете свой скрипт, убедитесь, что на него ссылаются ПОСЛЕ любых библиотек JQuery, на которые он опирается :)

19
Krayg

Для моего случая другой член моей команды включил другую версию jquery.js, когда он добавил в bootstrap.min.js. После удаления лишнего jquery.js проблема решена

2
sky91

Обратите внимание, что если вы не используете полную библиотеку пользовательского интерфейса jquery, это может сработать, если вам не хватает Widget, Menu, Position или Core. Там могут быть разные зависимости в зависимости от вашей версии jQuery UI

1
Lotus

У меня эта ошибка работает в ASP.net . Когда я запускаю приложение из Visual Studio, оно работало все нормально, но когда я опубликовал проект и протестировал его, я получил эту ошибку "Автозаполнение не является функцией "в chrom Inspect debugger . Я обнаружил, что различия между двумя средами были вызваны определением в web.config. в теге компиляции. если assign debug = "false", тогда все определения Bundel выполняются, а компиляция выполняется как выпуск. if debug = true ", то компиляция предназначена для этапа отладки, который не включает в себя объединение и минимизацию библиотеки js . Поэтому различия между средами.

<system.web>
    <compilation debug="false" targetFramework="4.5.1"/>
    <httpRuntime targetFramework="4.5.1"/>
</system.web>

Кроме того, изучая эти две среды, я обнаружил, что для среды отладки везде (_Layout.cshtml) @ Scripts.Render ("~/bundles/jquery") был в коде, где (под APP_Start) BundleConfig.cs
bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Static/js/lib/jquery-{version}.js", "~/Static/js/lib/jquery-ui.js"));

он отображается как:

<script src="/Static/js/lib/jquery-1.12.4.js"></script>
<script src="/Static/js/lib/jquery-ui.js"></script>

и другая среда (debug = false)

<script src="/bundles/jquery?v=YOLEkbKJYtNeDq0o56xjzXWKoYzrF5Vkqgyc9Cb0YgI1"></script>

В режиме отладки это работает, и другой получил проблему.

Что касается js lib, я увидел два файла jquery-ui:

jquery-ui.js jquery-ui.min.js

оказывается, что они оба по умолчанию взяты из шаблона нового проекта mvc . Когда jquery-ui.min.js был удален из библиотеки, проблема решена.

Я верю, что хотя jquery-ui.js был определен в BundleConfig.cs, фактически Jquery-ui.min.js был взят.

Кстати, jquery-ui.min.js не включал функцию автозаполнения, примененную к jquery-ui.js, который ее включал.

веселит.

0
Zohar Chiprut

Вы вызываете функцию до того, как страница загрузит jQuery. Всегда желательно использовать jQuery внутри $ (document) .ready (function () {// Ваш код здесь})

В твоем случае:

$(document).ready(function(){
  $(function(){
    $( "#searcharea" ).autocomplete({
      source: "suggestions.php"
    });
   $( "#searchcat" ).autocomplete({
      source: "suggestions1.php"
    });
   });

});

0
Vicky Vishal

В итоге моя проблема заключалась в том, что visual studio улавливала необработанное исключение и не позволяла скрипту работать дальше. Поскольку я работал в IDE, казалось, что была проблема, когда ее не было. Автозаполнение работало просто отлично. Я добавил блок try/catch, и это сделало IDE счастливым. 

 $.ajax({
            url: "/MyController/MyAction",
            type: "POST",
            dataType: "json",
            data: { prefix: request.term },
            success: function (data) {
                try {
                    response($.map(data, function (item) {
                        return { label: item.Name, value: item.Name };
                    }))
                } catch (err) { }

            }
        })
0
Sue

Если на вашей странице есть раздел для сценариев, например, следующий, убедитесь, что вы обращаетесь к своей библиотеке Jquery из этого раздела.

@section Scripts 
{ 
   <script src="~/Scripts/jquery-ui.js" type="text/javascript"></script>
} 
0
bobcatBisto

когда вы видите эту проблему, всегда помещайте свою функцию автозаполнения в функцию keyup и убедитесь, что вы добавили библиотеки 

$( "#searcharea" ).keyup(function(){
   $( "#searcharea" ).autocomplete({
      source: "suggestions.php"
   });
});
0
Naveen Roy