2011-03-02 71 views
14

我們已經在一個簡單的HTML頁面中測試了Jquery UI(jquery-ui-1.8.10.custom.min.js)自動完成功能。自動完成「不是函數」

然後,我們將相同的代碼複製到一個Asp.net用戶控件,並停止工作。 Javascript錯誤讀取「$ 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 2014-05-30 14:48:18

回答

13

該錯誤通常意味着jquery或插件尚未加載。檢查你的函數調用在文檔加載前沒有被擊中:

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

另外檢查javascript文件的路徑是否正確。 Firebug或谷歌瀏覽器開發人員工具可用於檢查這兩個問題。

+1

我已經用Firebug確認文件正在下載並且順序是正確的。 JQuery,JQuery UI,然後我使用自動完成。 – Jacques 2011-03-02 14:57:55

+1

您可能需要發佈一些更多的代碼,然後 – Phil 2011-03-02 15:57:27

+0

我編輯了我的問題併爲您添加了代碼段。 – Jacques 2011-03-03 08:34:18

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調用,並有另一種:

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

腳本標籤在我的AJAX的結果和我$ .hmtl()我的結果到我的文檔。通過這樣做,我們幾乎重新定義了所有var thatjquery-ui.min.js改變或利用的變量。

相關問題