$("#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的控制器。这确实适用于另一个页面但由于某种原因我在页面上出现此错误:
$("#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
加上其他一些自定义内容。
我有什么遗漏,或者我是否包含太多文件?
答案 0 :(得分:1)
首先,清理你的代码(看起来很懒散和粘贴)并解释你想要做的事情会有所帮助。
然而,乍一看我可以看到你的错误说:
.data(“autocomplete”)未定义
这意味着页面上不存在名为“自动填充”的元素。 尝试更改
.data("autocomplete")
到
.data("#Auto")
如果您尝试存储自动完成控件中包含的数据以供日后使用。
答案 1 :(得分:0)
我不敢说特里的反应是错误的。您的代码不是元素选择器。 data
函数用于检索已链接到HTML元素的数据对象。在您的情况下,您正在检索链接到ID为Auto
的元素的数据。
var data = $("#Auto").data("autocomplete");
// data is now an object stored by the autocomplete plugin.
您的问题似乎意味着找不到包含密钥autocomplete
的数据。我不确定除非你的自动完成脚本没有完成他们的工作,否则会发生这种情况。
答案 2 :(得分:0)
镝是错的,不是特里。以下是更改的来源链接:http://jqueryui.com/upgrade-guide/1.10/#removed-data-fallbacks-for-widget-names
对话框现在是ui-dialog,或uiDialog,自动完成现在是ui-autocomplete等等。