【问题标题】:Jquery-ui Autocomplete select Call back function is not working properlyjquery-ui 自动完成选择回调函数不能正常工作
【发布时间】:2012-10-25 21:33:26
【问题描述】:

我正在使用 jquery-ui 自动完成功能并在自动完成功能中进行 ajax 调用,我正在调用返回 Json 的控制器操作,一切正常,但是当我从建议下拉列表中选择某些内容时,select 回调函数调用并在select 回调函数ui 中未定义。

Javascript

 function log(message) {
            $("<div>").text(message).prependTo("#log");
            $("#log").scrollTop(0);
        }

        $("#search").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Home/GetCompanyNames",
                    dataType: "jsonp",
                    data: "searchterm=" + request.term,
                    success: function (data) {
                        response($.map(data, function (item) {
                            alert(item.Value);
                            return {
                                label: item.Name,
                                value: item.Name
                            };
                        }));
                    }
                });
            },
            minLength: 2,
            select: function (event, ui) {
                alert(ui.item.Name);
            alert(ui.item.Value);
            alert(ui.item.LogoUrl);
            },
            open: function () {
                $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
            },
            close: function () {
                $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
            }
        });

    });

控制器中的操作:

    public JsonResult GetCompanyNames (string searchterm)
    {
        var companies = context.companyService.Query().Where(x => x.Name.Contains(searchterm)).ToList();
        var list = companies.Select(item => new SearchJsonModel
                                                {
                                                    LogoUrl = item.Logo != null || item.Logo != "" ? "<img  src='/Upload/" + item.Logo + "' />" : "<img src='/home/image?image=" + item.Name + "' />", Name = item.Name, Value = item.InternetName
                                                }).Select(model => (model)).ToList();
        return Json(list, JsonRequestBehavior.AllowGet);
    }

SearchJsonModel:

 public class SearchJsonModel
{
    public string Name { get; set; }
    public string Value { get; set; }
    public string LogoUrl { get; set; }
}

如果您需要更多详细信息,请询问我,并提前致谢。

【问题讨论】:

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


【解决方案1】:

要获取名称、值、LogoUrl,请像这样设置响应:

response($.map(data, function (item) {
                        alert(item.Value);
                        return {
                            label: item.Name,
                            value: item.Name
                            LogoUrl: item.LogoUrl,
                            Name: item.Name 
                        };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多