【问题标题】:Formatting and redirecting users (w/ jQuery UI Autocomplete)格式化和重定向用户(使用 jQuery UI 自动完成)
【发布时间】:2012-02-03 08:37:49
【问题描述】:

我是 jQuery 和 Stack Overflow 的新手。我正在做我的学校项目,并且已经实现了基本的自动完成搜索以在我小组的 ASP.NET Web 应用程序上工作。我遵循了本指南:http://www.magic-dev.com/autocomplete-textbox-aspnet-database.htm

我可以搜索名称(从数据库中获取),但我想要做的是允许用户从结果中选择名称(单击名称时),并将它们重定向到个人资料页面(例如profile.aspx?id=25)。

我在 Stack Overflow 上进行了搜索,发现了 Redirecting users on select from autocomplete?。尝试实现该问题的代码,但无济于事。

搜索框的当前结果是这样的(格式[user's ID]-[Name]):

25-Dennis Ferrell

我不想在结果中显示 ID,而只显示名称。该 ID 已添加到其中,因为我想将该 ID 用于 profile.aspx?id=25

** 编辑 1 **

我读到 formatItemformatResult 都从 jQuery UI (http://www.learningjquery.com/2010/06/autocomplete-migration-guide) 中贬值了。所以现在,我得到了在点击时重定向用户的代码,但格式仍然是25-Dennis Ferrell

这是我更新的代码:

       $('#<%= searchMenu.ClientID %>').autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "PredictiveSearch.asmx/GetAllNames",
                    data: "{'nameKeyword':'" + request.term + "'}",
                    dataType: "json",
                    async: true,
                    success: function (data) {
                        response(data.d);
                    }
                });
            }, 
            select: function (event, data) {
                window.location = "profile.aspx?id=" + data.item.value.split("-")[0];
            }
        });

谁能帮我格式化一下?只想从25-Dennis Ferrell 中删除25- 并使用25 通过ID 重定向用户。

** 编辑 2 **

我试过这样做:

success: function (data) {
    response($.map(data.d, function (item) {
        return item.split("-")[1];
    }));
}

结果将是Dennis Ferrell,但25 不能传递给select: 函数(重定向用户所需要的)。

【问题讨论】:

  • 什么不完全有效?如果ui.item.value 是你的方式,我很确定你的split 代码是正确的。
  • @AndrewWhitaker 我已经更新了问题(参见EDIT 2)。
  • 欢迎来到 Stack Overflow!很高兴看到你终于在这里发帖了 :) 你可以在一段时间后单击左侧的空心复选标记来标记自己的答案已被接受,而不是在标题中添加“已解决”——这就是我们在此处指示已解决问题的方式。
  • @BoltClock 好的。谢谢!

标签: jquery asp.net jquery-autocomplete


【解决方案1】:

好的,所以我把它分开了。搜索框中的结果将显示Dennis Ferrell,而select: 函数的ID 值为25。我认为这不是最佳答案,但仍然是success: 函数的代码:

success: function (data) {
    response($.map(data.d, function (item) {
        return {
            id: item.split("-")[0],
            value: item.split("-")[1],
        }
    }));
}

还有select:函数的代码:

select: function (event, data) {
    //use data.item.value if want to get the name [Dennis Ferrell]
    window.location = "profile.aspx?id=" + data.item.id;
}

【讨论】:

    【解决方案2】:

    您应该在 select 函数中从 ui.item.id 获取 id。

    location.href = "profile.aspx?id=" + ui.item.id
    

    希望对你有帮助

    【讨论】:

    • 在选择结果时,它根本不会将我重定向到页面。
    【解决方案3】:

    你可以使用

    window.location = "page.aspx?userid="+ui.item.id;
    

    【讨论】:

    • 不起作用。单击/选择结果时,它什么也不做。
    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多