2016-08-25 3 views
0

Создал простой компонент поиска в AEM и добавил следующий код в свой JSP. Также добавлен плагин автозаполнения и файл pjugin jquery в узле clientlib. Но получение ошибки «автозаполнение не является функцией» каждый раз, когда я пытаюсь запустить страницу с этим компонентом. Не совместимо ли это с AEM? Использование AEM 6.0 SP2

<% @include file="/libs/foundation/global.jsp"%> 
<cq:includeClientLib categories="jquerysamples" /> 

<html> 
<head> 
<script> 
$(function() { 
      var availableTutorials = [ 
       "ActionScript", 
       "Boostrap", 
       "C", 
       "C++", 
      ]; 
      $("#searchInput").autocomplete({ 
       source: availableTutorials 
      }); 
     }); 
</script> 
</head> 
<body> 
    <div class="formDiv"> 
     <form id="form" > 
      <input type="text" id="searchInput" name="searchbox"> 
      <div id="searchResults"/> 
     </form> 
    </div> 
</body> 
</html> 

ответ

0

Я рекомендую понять, как браузеры разбора HTML документы. http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/#HTML_Parser является вводным ресурсом.

  • У вас есть тег сценария JS внутри главы вашего документа. (это немедленный анализ &))
  • есть cq:includeClientLib за пределами документа. Я не верю, что поведение HTML5 определяет, как это должно вести себя.
  • no jQuery document onLoad определен, поэтому браузер пытается запустить JavaScript до того, как будет создан DOM.

Я рекомендую:

  • Попробуйте переместить cq:includeClientLib внутри головы.
  • Используйте документ HTML5 <!doctype html>. Это должно «кикнуть» браузеры в согласованный режим синтаксического анализа (особенно, избегая бесчисленных режимов IE Quirks).
  • Переместите блок скриптов только в конец тела. Еще лучше, оберните JS обработчиком onload, чтобы заставить JS запускаться ПОСЛЕ того, как HTML был разобран & DOM был создан.
+0

В качестве альтернативы, http://stackoverflow.com/questions/36455911/jquery-uncaught-typeerror-autocomplete-is-not-a-function?rq=1 отвечает на один и тот же основной вопрос, но извне AEM/JSP. –

0

У меня есть решение. Это не было обязательным плагином jquery-ui. Я добавил зависимость «cq: includeClientLib» для папки плагина к файлу js, который я использовал для автозаполнения. Сейчас он работает как очарование.

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