【问题标题】:What is wrong with this Autocomplete Code (JQuery-UI AutoComplete)这个自动完成代码有什么问题(JQuery-UI AutoComplete)
【发布时间】:2012-01-16 05:57:30
【问题描述】:
$("#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

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

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

【问题讨论】:

    标签: javascript jquery asp.net-mvc jquery-ui autocomplete


    【解决方案1】:

    首先,清理你的代码(看起来是懒惰地剪切和粘贴的)并解释你想要做什么会有所帮助。

    然而,乍一看我可以看到你的错误说:

    .data("autocomplete") 未定义

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

    .data("autocomplete")

    .data("#Auto")

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

    【讨论】:

    • 将 .data("autocomplete") 识别具有此类的元素:ui-autocomplete-input?
    • 没有。 ("autocomplete") 是一个将寻找 &lt;autocomplete /&gt; 元素的选择器。如果你想要那个课程,你需要使用('.ui-autocomplete-input'),但我不确定这就是你想要的。您应该先尝试用非编程语言解释您要做什么。
    • 我对基本jQuery选择器的解释可以找到here
    • 我正在尝试使用 JQuery UI 为文本框创建自动完成功能。该框有一个名为 Auto 的 ID。我正在使用此处的自动完成功能:jqueryui.com/demos/autocomplete
    • 我可以看到,但是您已经将插件大幅定制到一个即使是最老练的 jQuery 用户也会觉得复杂的水平。所以我假设你复制了代码并为你的目的定制了一些代码,在这种情况下你遗漏了一些东西或添加了一些错误的东西。首先尝试使用基本形式的自动完成插件,然后慢慢进行修改,这样您就可以看到发生了什么。
    【解决方案2】:

    恐怕特里的反应是错误的。您的代码不是元素选择器。 data 函数用于检索已链接到 HTML 元素的数据对象。在您的情况下,您正在检索链接到 ID 为 Auto 的元素的数据。

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

    您的问题似乎暗示找不到键为autocomplete 的数据。我不确定这是怎么发生的,除非你的自动完成脚本没有完成他们的工作。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-04-20
        • 1970-01-01
        • 2011-11-16
        • 2017-06-19
        • 2011-08-11
        • 1970-01-01
        • 1970-01-01
        • 2015-05-30
        • 1970-01-01
        相关资源
        最近更新 更多