2011-12-08 49 views
0
$("#Auto").autocomplete({ 
minLength: 4, 
type: 'GET', 
source: function (request, response) { 
    var term = request.term; 
    if (term in cache) { 
     response(cache[term]); 
     return; 
    } 
    var url = '<%=Url.Action("AutoComplete", "Thing", new {area = "Admin"}) %>' + "?terms=" + request.term; 
    lastXhr = $.getJSON(url, request, function (data, status, xhr) { 
     cache[term] = data; 
     if (xhr === lastXhr) { 
      response(data); 
     } 
    }); 
} 
}) 
    .data("autocomplete")._renderItem = function (ul, item) { 
      return $("<li></li>") 
.data("item.autocomplete", item) 
    .append("<a> Thingy1: " + item.Prop1 + " Thingy2: " + item.Prop2 + "<br>" + "</a>") 
    .appendTo(ul); 
     }; 

假設#Auto,Prop1和Prop2存在,並且有一個名爲Thing的控制器。這確實另一頁上工作,但由於某種原因,我得到一個頁面上此錯誤:這個自動完成代碼(JQuery-UI AutoComplete)有什麼問題

$("#Auto").autocomplete({minLength: 4, type: "GET", source: function (request, response);var term = request.term;if (term in cache) {response(cache[term]);return;}var url = '<%=Url.Action("AutoComplete", "Thing", new {area = "Admin"}) %>' + "?terms=" + request.term;lastXhr = $.getJSON(url, request, function (data, status, xhr) {cache[term] = data;if (xhr === lastXhr) {response(data);}});}}).data("autocomplete") is undefined 

我已加載以下文件:

jquery-ui-1.8.2.custom.min.js 
jquery-1.4.2.min.js 
jquery.autocomplete.pack.js 
jquery.ajaxQueue.js 
jquery.bgiframe.min.js 
thickbox-compressed.js 
jquery-ui-1.8.2.custom.css 
jquery-require.1.1.packed.js 

再加上一些其他的自定義的東西。

有什麼我想念的,還是我有太多的文件包括在內?

回答

1

首先,清理你的代碼(看起來是被粘貼的&)並解釋你正在嘗試做什麼將會有所幫助。

然而,乍一看我可以看到你的錯誤說:

。數據(「自動完成」)是未定義

這將意味着,沒有所謂的「自動完成」元素的存在頁。 嘗試改變

.data("autocomplete")

.data("#Auto")

如果你想存儲包含在供以後使用自動完成控件中的數據。

+0

將.data(「autocomplete」)識別具有此類的元素:ui-autocomplete-input? – tehdoommarine

+0

編號'(「autocomplete」)'是一個將查找''元素的選擇器。如果你想要這個類,你需要使用'('.ui-autocomplete-input')',但我不確定這是你想要的。你應該首先嚐試用非編程語言來解釋你想要做什麼。 – Terry

+0

我對基本的jQuery選擇器的解釋可以在這裏找到[http://stackoverflow.com/questions/7664384/whats-the-difference-in-jquery-selectors/7664407#7664407) – Terry

0

我不敢說特里的回答是錯誤的。你的代碼不是元素選擇器。 data函數用於檢索已鏈接到HTML元素的數據對象。就你而言,你正在檢索鏈接到ID爲Auto的元素的數據。

var data = $("#Auto").data("autocomplete"); 
// data is now an object stored by the autocomplete plugin. 

你的問題似乎暗示與關鍵autocomplete沒有數據可尋。我不確定這是如何發生的,除非你的自動完成腳本沒有完成他們的工作。