2012-02-03 68 views
4

我是jQuery和堆栈溢出的新手。我正在做我的学校项目,并实施了基本的自动完成搜索,以处理我的小组的ASP.NET Web应用程序。我遵循这个指南:http://www.magic-dev.com/autocomplete-textbox-aspnet-database.htm格式和重定向用户(w/jQuery UI自动完成)

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

我在Stack Overflow上搜索过并且遇到了Redirecting users on select from autocomplete?。试图执行这个问题的代码,但无济于事。

目前结果的搜索框是这样的(格式[用户ID] - [名]):

25-Dennis Ferrell 

我不希望显示在结果的ID,但只显示名字。该ID已添加到它中,因为我想使用ID为profile.aspx?id = 25

** EDIT 1 **

我读formatItemformatResult都由jQuery用户界面(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重定向用户。

** EDIT 2 **

我试着这样做:

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

结果将是Dennis Ferrell,但25不能传递到select:功能(这是需要用于重定向用户)。

+0

什么是不工作的到底是什么?我相当肯定你的'split'代码是正确的,如果'ui.item.value'是你的方式。 – 2012-02-03 15:15:51

+0

@AndrewWhitaker我已经更新了这个问题(参见**编辑2 **)。 – yanyi 2012-02-03 16:22:43

+0

欢迎来到Stack Overflow!很高兴看到你最终在这里发布:)与其向您的标题添加“已解决”,您可以通过单击左侧的空白复选标记标记您在某段时间之后接受的答案 - 这就是我们在此处表明已解决的问题的方式。 – BoltClock 2012-02-04 05:06:33

回答

2

好了,所以我把它分裂。搜索框中的结果将显示Dennis Ferrell,而select:函数的ID值为25。没有最佳答案,我想,但尽管如此,这里的success:函数的代码:为select:功能

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

,代码:

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

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

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

希望它有助于

+0

在选择结果时,它根本不会将我重定向到页面。 – yanyi 2012-02-03 08:51:31

1

可以使用

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

不起作用。点击/选择结果时,它什么也不做。 – yanyi 2012-02-03 10:34:03