JQuery Autocomplete только предлагает первый ряд - PullRequest
2 голосов
/ 12 марта 2010

Я занимаюсь исследованиями с использованием плагина автозаполнения JQuery и API Карт Google. То, что у меня до сих пор, находится здесь . Я использую Asp.net MVC для генерации списка возможных совпадений адресов (ограничивается только адресами США) и представляю их в виде списка с разделителями по каналам для автозаполнения, который должен .split выводить их и предлагать их пользователь.

Вот JavaScript:

$(document).ready(function() {
        $("#address").autocomplete("/Address/Address/").split('|');
    });

Вот что возвращает Address/Address?q=3118:

Galax Dr, Statesville, NC 28677, US|State Highway S-46-148, Gastonia, NC 28052, US|

Проблема, с которой я сталкиваюсь (кроме упрямой ошибки JavaScript только для IE, о которой я расскажу в другом вопросе), заключается в том, что предлагается только первый результат.

На этой странице четко показаны два результата, но при вводе "3118" в текстовое поле выдается только результат Galax Dr. Как я могу получить Automplete для получения обоих результатов?

РЕДАКТИРОВАТЬ: очистить код, чтобы избавиться от этого "тестовый код" Vibe

РЕДАКТИРОВАТЬ: исправить себя, заменив трубы с CRLF и удалив split(). Новый JavaScript:

$(document).ready(function() {
    $("#address").autocomplete("/Address/Address/");
});

Автозаполнение - мой новый лучший друг:)

Ответы [ 2 ]

2 голосов
/ 12 марта 2010

Глядя на JavaScript внизу страницы, похоже, что вы разбиваете строку после вызова автозаполнения.

Итак, вместо

$("#example").autocomplete(data).split('|');

нужно сделать

$("#example").autocomplete(data.split('|'));

Это от просмотра текущей страницы ... которая выглядит как тестовый код. Было бы полезно, если бы вы опубликовали полный код, с которым пытаетесь работать.

1 голос
/ 12 марта 2010

Если вы собираетесь передать список с разделителями каналов, то вам нужна функция-обработчик для обработки результата. Что-то вроде:

 $("#address").autocomplete({source: function(request, response) {
                                   $.ajax({
                                            url: "/Address/Address/",
                                            data: request,
                                            success: function(data) {
                                              response(data.split('|'));
                                            }
                                          });
                                 }
  });

Проверьте документы о трех способах взаимодействия с источником данных. Вам нужно либо вернуть json вместо данных, разделенных каналом, либо использовать обратный вызов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...