2011-03-02 9 views
14

우리는 간단한 HTML 페이지에서 Jquery UI (jquery-ui-1.8.10.custom.min.js) 자동 완성 함수를 테스트했습니다.자동 완성은 "함수가 아닙니다."

다음 우리는 Asp.net 사용자 정의 컨트롤에 동일한 코드를 복사하고 작동을 멈 춥니 다. 자바 스크립트 오류는 "$ searchBox.autocomplete가 함수가 아닙니다"라고 읽습니다.

이 사용자 정의 컨트롤은 Asp.net Sitefinity 3.7 프로젝트에서 사용되고 있습니다. 이 페이지에는 ScriptManager가 있습니다. 내가 무엇을 추가 할 수 있는지 잘 모르겠다 ...

아무도 몰라요.

Ammend :

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

감사합니다.

+0

내 대답을 찾았습니다. jQuery 라이브러리를 두 번로드했습니다. http://stackoverflow.com/questions/19591155/autocomplete-is-not-a-function-error – Orin

답변

13

이 오류는 일반적으로 jquery 또는 플러그인이 아직로드되지 않았 음을 의미합니다. 문서가로드되기 전에 함수 호출에 도달하지 않았는지 확인합니다.

$(function(){ 
    var $searchBox = $('#mysearchBox'); 
    $searchBox.autocomplete(...); 
}); 

또한 javascript 파일의 경로가 올바른지 확인하십시오. Firebug 또는 google 크롬 개발자 도구는이 두 가지 문제를 모두 확인하는 데 유용합니다.

+1

파일을 다운로드하는 중이며 주문이 올바른지 확인했습니다. JQuery, JQuery UI, 그럼 자동 완성을 사용합니다. – Jacques

+1

코드를 더 게시해야 할 수도 있습니다. – Phil

+0

내 질문을 편집하고 코드 스 니펫을 추가했습니다. – Jacques

1

이는 Sitefinity 자체의 jQuery 사용과 충돌하여 발생합니다.

jQuery에 대한 스크립트 참조를 닫는 양식 태그 앞에있는 페이지의 맨 아래로 옮기는 경우. 이렇게하면 Sitefinity 4.0의 문제가 해결되지만 Sitefinity 3.7에서도이 문제가 해결 될 것으로 생각됩니다.

9

그것은 수 :

  1. jquery.js가로드되는 것을 순서.
  2. 중복 된 jquery.js는 같은 페이지에 있습니다.
3

테스트를 위해 jQuery.noConflict() method을 사용해보세요. 기본적으로 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'; 
2

이 문제가 발생했으며 내 jQuery 파일이 두 번로드되는 문제가있었습니다. 꽤 많은이 내 머리에 있었다 :

<script src="assets/js/jquery.min.js"></script> 
<script src="js_css/jquery-ui.min.js" ></script> 

을 그리고 내 문서의 더 많은 부분을로드하는 AJAX 호출을했고, 또 다른이 있었다 : 내 AJAX 결과에

<script src="assets/js/jquery.min.js"></script> 

스크립트 태그와 I이었다 내 결과를 내 문서에 $ .hmtl()하십시오. 이렇게함으로써 우리는 변경되거나 사용 된 모든 var를 재 정의하고 있습니다.

관련 문제