2012-02-03 63 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