jQuery自动完成路由数据并使用自定义数据和显示

时间:2012-12-01 15:19:54

标签: javascript jquery jquery-ui jquery-ui-autocomplete

以下是我尝试使用的代码(从远程json中提取的部件,从自定义数据显示中删除的部件):

$(function () {
    $("#Field1Text").autocomplete({
        minLength: 0,
        source: function (request, response) {
            $.ajax({
                url: "/Main/Users/GetItems",
                dataType: "json",
                data: {
                    group: "Default",
                    query: request.term
                }
        },
        focus: function (event, ui) {
            $("#Field1Text").val(ui.item.Description);
            return false;
        },
        select: function (event, ui) {
            $("#Field1Text").val(ui.item.Description);

            return false;
        }
    })
    .data("autocomplete")._renderItem = function (ul, item) {
        return $("<li>")
            .data("item.autocomplete", item)
            .append("<a><strong>" + item.Description + "</strong><br>" + item.Section + " - " + item.Type + " - " + item.Name + "</a>")
            .appendTo(ul);
    };
});

数据拉回正常,但渲染项功能永远不会触发。我已经废弃了渲染项目版本并使用了成功:源代码内部它看起来像这样:

 success: function (data) {
                    response($.map(data, function (ul, item) {
                        return $("<li>")
                            .data("item.autocomplete", item)
                            .append("<a><strong>" + item.Description + "</strong><br>" + item.Section + " - " + item.Type + " - " + item.Name + "</a>")
                            .appendTo(ul);
                    }));
                }

我使用了firebug,我能够在响应部分找到一个断点:如果我查看数据中的数据,它看起来像:

[ Object { ...data... }, Object { ...data... }]

如果我在成功部分的.data行设置了一个断点,我看到ul是其中一个对象( looks like " Object { ... data ... }")

此时item元素为0,当我尝试渲染<a>标记时,它在所有属性上显示为Undefined(可理解,看起来将项目对象视为{{ 1}})。

如何正确处理该组件?

编辑:对不起,我想根据评论中的建议添加一个jsFiddle,但家里的东西还在继续。

http://jsfiddle.net/EYj8v/2/

我评论的代码类似于我们在工作中使用的代码。不幸的是,Web应用程序是一个内部的应用程序,其数据库未连接到外部世界,因此我无法使用实时数据。 testResults对象就是我在成功中看到的:section的数据元素。

我实际上能够获得成功部分,但我不相信我正确使用jQuery UI / Autocomplete(至少我的假设),因为我能够查看ul.Properties并查看实际数据。附加使用虚假数据的项目,但是当我尝试将成功块复制并粘贴到渲染项目时,所有数据都是未定义的。我也找不到那个阶段的一对一映射(ul是页面上的元素,item只是[li])。

0 个答案:

没有答案