什么是错误的这个自动完成代码(JQuery-UI自动完成)

What is wrong with this Autocomplete Code (JQuery-UI AutoComplete)

本文关键字:代码 JQuery-UI 错误 什么      更新时间:2023-09-26
$("#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

加上一些其他自定义的东西。

是我遗漏了什么,还是我包含了太多文件?

首先,清理你的代码(看起来像是被懒人剪切的&粘贴)并解释你想做什么会有帮助。

然而,第一眼我可以看到你的错误是:

.data("autocomplete")未定义

这意味着页面上不存在称为"自动完成"的元素。尝试更改

.data("autocomplete")

.data("#Auto")

如果您试图存储自动完成控件中包含的数据以供以后使用。

恐怕Terry的回答是错误的。您的代码不是元素选择器。data函数用于检索已链接到HTML元素的数据对象。在您的示例中,您正在检索链接到id为Auto的元素的数据。

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

您的问题似乎意味着无法找到密钥为autocomplete的数据。我不确定这怎么可能发生,除非你的自动完成脚本没有做他们的工作。

镝是错的,不是特里。以下是更改的源链接:http://jqueryui.com/upgrade-guide/1.10/#removed-data-fallbacks-for-widget-names

dialog现在是ui-dialog,或者uiDialog, autocomplete现在是ui-autocomplete,等等