Форматирование и перенаправление пользователей (с автозаполнением пользовательского интерфейса jQuery) - PullRequest
4 голосов
/ 03 февраля 2012

Я новичок в jQuery и переполнении стека.Я делаю свой школьный проект и внедрил базовый поиск автозаполнения для работы в веб-приложении ASP.NET моей группы.Я пошел вместе с этим руководством: http://www.magic -dev.com / autocomplete-textbox-aspnet-database.htm .

Я могу искать имена (взятые из базы данных), ноя пытаюсь разрешить пользователю выбрать имя (при щелчке по имени) из результата и перенаправить его на страницу профиля (например, profile.aspx? id = 25 ).

Я выполнил поиск по переполнению стека и обнаружил Перенаправление пользователей при выборе из автозаполнения? .Пытался реализовать коды по этому вопросу, но безрезультатно.

Текущий результат для окна поиска выглядит примерно так (формат [ID пользователя] - [Имя] ):

25-Dennis Ferrell

Я не хочу отображать идентификатор в результате, но только показать имя.Идентификатор был добавлен в него, потому что я хотел использовать идентификатор для profile.aspx? Id = 25 .

** РЕДАКТИРОВАТЬ 1 **

Я прочитал, что formatItem и formatResult устарели из 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- из 25-Dennis Ferrell и использовать 25 для перенаправления пользователячерез идентификатор.

** РЕДАКТИРОВАТЬ 2 **

Я пытался сделать это:

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

Результат будет Dennis Ferrell,но 25 нельзя передать в функцию select: (которая необходима для перенаправления пользователя).

Ответы [ 3 ]

2 голосов
/ 04 февраля 2012

Хорошо, так что я получил его для разделения.Результат в окне поиска покажет Dennis Ferrell, в то время как функция select: получила значение идентификатора 25 in. Я думаю, что это не лучший ответ, но все же, вот код для функции 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;
}
1 голос
/ 03 февраля 2012

вы можете использовать

window.location = "page.aspx?userid="+ui.item.id;
1 голос
/ 03 февраля 2012

Вы должны получить идентификатор из ui.item.id в функции выбора.

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

надеюсь, это поможет

...