JQuery UI自动完成:.data(...)未定义[但仅当我添加第二个自动完成框时]

Tob*_*oby 5 javascript jquery jquery-ui autocomplete

我正在使用JQuery 1.8.3和JQuery UI 1.8.24.

这是代码,工作得很好:



    $(function () {
        $("#").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '', type: "POST", dataType: "json",
                    data: { searchPattern: request.term },
                    cache: false,
                    success: function (data) {
                        response($.map(data, function (item) {
                            return { label: item.Label, value: item.Value, id: item.Id, description: item.Description }
                        }))
                    }
                });
            },
            delay: 300,
            minLength: 2,
            autoFocus: true
        })
        .data("autocomplete")._renderItem = function (ul, item) {
            return $("li>/li>")
            .data("ui-autocomplete-item", item)
            .append("a>" + item.label + "br>div style=\"font-size:x-small;font-style:italic;\">" + item.description + "/div>/a>")
            .appendTo(ul);
        };
    });

Run Code Online (Sandbox Code Playgroud)

但是,如果我向HTML添加第二个文本框,请复制上面的JavaScript并更改选择器和URL(所以最后我有两个自动完成文本框),然后我得到第二个自动完成的以下错误:

TypeError: $(...).autocomplete(...).data(...) is undefined
Run Code Online (Sandbox Code Playgroud)

有了一个自动完成功能,它可以完美运行,但有一秒不能解释原因.有人能帮帮我吗?

提前致谢!

托比

编辑:

我发现了这个问题.

JavaScript代码位于*.js文件中,两个文本框位于两个不同的*.thml文件中.

所以一次只有一个文本框,这就是问题所在.

现在我在*.html文件中执行最后一部分(使用数据(...))并且它工作正常:

$("#selector").autocomplete().data("autocomplete")._renderItem = renderItem;
Run Code Online (Sandbox Code Playgroud)

谢谢您帮忙!

Aru*_*hny 6

有一个数据关键命名约定的变化UI 1.9

jQuery 1.9/1.10删除了密钥autocomplete并添加了uiAutocomplete

.data("uiAutocomplete")
Run Code Online (Sandbox Code Playgroud)

请注意:根据最新文档(v1.10.x),它应该是.data("ui-autocomplete")(参见:http://jqueryui.com/autocomplete/#custom-data)