2013-10-25 23 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> 

我已經包含了這個網頁與我的網站的搜索代碼一個單獨的文件,我已經內嵌它在不同的網頁,在我的索引頁,這是在暗示我從酸值CE文件,但在其他頁面上它給我typerror上線

$("#searcharea").autocomplete({ 

我的網站鏈接是: http://www.jodhpuryp.in/

這是我的自我暗示箱源 http://api.jqueryui.com/autocomplete/

誰能告訴我,爲什麼我在我的網站的其他頁面得到這個錯誤,而其對指數page.Any幫助工作是appreciated.Thanks

+1

由於某種原因'jqueryui.js'沒有被加載到您的頁面上。檢查控制檯中的錯誤。 –

+0

我做了,沒有錯誤發生,唯一的錯誤是TypeError,它表示自動完成未定義: – user2454340

+0

你得到的代碼應該工作:http://jsfiddle.net/5TSDG/。檢查您的腳本加載是否正確。 –

回答

28

發現了問題,我包括我的谷歌翻譯另一個jQuery的文件,它們相互是矛盾而導致無法加載自動完成功能。

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

編輯:如果你外在化腳本,確保它之後,它依賴於:)

任何JQuery的庫引用
+0

我按照上面所述的順序加載內容,也許這就是爲什麼它在除了一頁以外的所有頁面上工作。我也嘗試了外部java文件方法。但它在所有頁面上工作,除了我提到的那個:| – user2454340

+0

好的,朋友 - 我只是看着你的網頁的來源。我的第一個建議是確保您的文檔類型位於頁面的頂部。目前你有上面的東西。這可能會導致瀏覽器出現奇怪的錯誤。 – Krayg

+0

建議採取了,它會在晚上更新:) – user2454340

2

需要注意的是,如果你不使用完整的jQuery UI庫,這可以被觸發,如果你錯過了窗口小部件,菜單位置,或核心。前Angularjs庫幫助我有可能會根據您的jQuery UI的

0

加載jQuery庫的版本不同的依賴性。

<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的之前的功能。 總是建議在$(document)中使用jQuery。準備(函數(){//你的代碼在這裏})

你的情況:

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

});

0

我的問題最終成爲visual studio捕捉未處理的異常並阻止腳本進一步運行。因爲我在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) { } 

      } 
     }) 
相關問題