当_renderItem设置时,单击/获取ui.item未定义

时间:2015-02-03 04:06:51

标签: c# jquery asp.net-mvc autocomplete

我正在使用jquery自动完成进行编码,我的目的只是用([Image] [Name])显示自定义视图。当我只使用自动完成代码与标准renderItem(没有设置)自动完成工作完美但没有图像我想显示但是当我设置_renderItem它完美地显示项目但是当选择/聚焦它时我得到ui.item是未定义的。请你帮助我好吗?这是我的代码:

使用Jquery-ui 1.11.2和Jquery 1.10.2:

$("#iSearch").autocomplete({

    source: function (request, response) {

        var psField = "produtoNome";

        $.ajax({
            url: "/Search/PesquisaParcial",
            data: "{'psField':'" + psField + "', 'psTerm':'" + request.term + "'}",
            dataType: "json",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                //{ label: item.ProdutoFoto, value: item.ProdutoNome }
                response($.map(data, function (item) {
                    return { label: item.ProdutoFoto, value: item.ProdutoNome, data: item };
                }));
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus);
            }
        });
    },
    focus: function (event, ui) {
        $("#iSearch").val(ui.item.value);
        return false;
    },
    select: function (event, ui) {
        $("#iSearch").val(ui.item.value);
        return false;
    },
    minLength: 2
}).autocomplete("instance")._renderItem = function (ul, item) {
    var produtoFoto = item.data.ProdutoFoto == null ? "../Images/semfoto.png" : "../Images/" + item.data.ProdutoFoto;
    var FotoHtml = "<img src='" + produtoFoto + "' width='35' height='30' />";
    return $("<li>")
        .append("<a>" + FotoHtml + "&nbsp;&nbsp;" + item.value + "</a>")
        .appendTo(ul);
};

1 个答案:

答案 0 :(得分:0)

我发现了什么问题!!!

我会在这里发帖,因为它可以帮助其他有同样问题的人。我为解决这个问题做了什么:

  1. 通过nuget jquery 1.11.2和jquery-ui 1.11.2
  2. 安装
  3. 我在我的index.cshtml代码中直接链接到jss和css,然后我从那里删除了
  4. 在BundleConfig.cs中,我刚刚插入了对jquery-ui的引用:

        bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                    "~/Scripts/jquery-ui-{version}.js"));
    
  5. 将javascript自动填充代码放在Index.cshtml脚本部分中,如下所示:
  6. @section scripts { ... Javascript自动填充代码... }

    1. 快乐自动完成工作!