2013-10-25 5 views
17

ниже мой мой код.autocomplete не является функцией ошибки

<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> 

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

$("#searcharea").autocomplete({ 

Мой сайт ссылка: http://www.jodhpuryp.in/

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

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

+1

Почему-то 'jqueryui.js' не загружается на вашу страницу. Проверьте наличие ошибок в консоли. –

+0

Я сделал, ошибок не возникает, единственная ошибка - TypeError, которая говорит, что автозаполнение не определено: | – user2454340

+0

Код, который у вас есть, должен работать: http://jsfiddle.net/5TSDG/. Проверьте, правильно ли загружаются ваши сценарии. –

ответ

28

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

+0

Чувак, я даже не могу сказать, насколько это помогло. Такая странная ошибка. –

15

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

Если ваш скрипт является строковым, а не ссылкой, переместите его в нижнюю часть страницы. Или (мой предпочтительный вариант) поместить скрипт во внешнем .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> 

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

+0

Я загружаю контент в том же порядке, что и вы упомянули выше, и, возможно, поэтому он работает на всех страницах, кроме одного. Я также попробовал внешний метод java-файла. но он работает на всех страницах, кроме тех, что я упомянул: | – user2454340

+0

ОК, друг. Я просто посмотрел на источник вашей страницы. Мои первые предложения - обеспечить, чтобы ваш doctype находился в верхней части страницы. В настоящее время у вас есть что-то выше. Это может вызвать странные ошибки в браузерах. – Krayg

+0

предложение принято, и оно будет обновляться ночью :) – user2454340

2

Обратите внимание, что если вы не используете полную библиотеку пользовательских интерфейсов jquery, это может быть запущено, если вам не хватает виджета, меню, положения или ядра. Могут быть разные зависимости в зависимости от вашей версии jQuery UI

0

Загрузка библиотеки jQuery перед библиотекой Angularjs помогла мне.

<head> 
 
<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="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
</head>

2

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

-1

<head> 
 
<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="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
</head>

+1

Это не ответ. – Mutmatt

0

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

В вашем случае:

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

});

0

Моя проблема оказалась визуальной студией, улавливающей необработанное исключение и препятствующее запуску скрипта. Поскольку я работал в среде 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) { } 

      } 
     }) 
Смежные вопросы