2016-08-25 20 views
0

AEMに簡単な検索コンポーネントを作成し、そのJSPに次のコードを追加しました。 また、clientlibノードにautocompleteプラグインとjquery plyuginファイルが追加されました。しかし、このコンポーネントでページを実行しようとするたびに、エラー "オートコンプリートは機能ではありません"が表示されます。 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の振舞いがどのように振舞うべきかを定義しているとは思わない。
  • jQueryドキュメントのonLoadが定義されていないため、ブラウザはDOMが構築される前にJavaScriptを実行しようとします。

私はお勧め:

  • 頭の中cq:includeClientLibを移動してみてください。
  • HTML5のdoctype <!doctype html>を使用してください。これは、ブラウザを一貫性のある解析モードに「キック」させるべきです(特にIEの無数のモードを避ける)。
  • スクリプトブロックをボディの最後の内側に移動します。 DOMが構築された後に、&のHTMLが解析された後にJSを実行させるために、onloadハンドラを使用してJSをラップします。
+0

代わりに、http://stackoverflow.com/questions/36455911/jquery-uncaught-typeerror-autocomplete-is-not-a-function?rq=1は同じ基本的な質問に答えるが、AEM/JSPの外部からは答えます。 –

0

私は解決策を得ました。 jquery-uiプラグインをバインドしていませんでした。私は、プラグインフォルダの "cq:includeClientLib"の依存関係を、私がオートコンプリート用に使用していたjsファイルに追加しました。それは今の魅力のように働いています。

関連する問題