2010-03-11 2 views
2

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

Вот 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| 

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

This page ясно показывает два результата, однако ввод текста «3118» в текстовое поле дает только результат Galax Dr. Как я могу получить Automplete для получения обоих результатов?

EDIT: вычистили код, чтобы избавиться от этого «тестового кода» Vibe

EDIT: исправлен себя заменой труб с CRLF и удаления split(). Новый JavaScript:

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

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

ответ

1

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

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

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

+0

Хотя я не использовал этот ответ для решения моей проблемы, я, конечно, мог бы иметь, так что +1 согласился. –

2

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

Таким образом, вместо

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

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

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

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

+0

Я не делаю $ ("# example"). Autocomplete (data) .split ('|'); Я делаю $ ("# address"). Autocomplete ("/ Address/Address /"). Split ('|'); Как заполнить «данные» в противном случае? –

+0

Адрес "/ Адрес/Адрес /"? Если это так, я бы предложил сделать запрос ajax ... – Brant

Смежные вопросы