Jquery Автозаполнение связанных запросов - PullRequest
6 голосов
/ 12 мая 2009

У меня есть страница с двумя полями ввода Город и Место. У меня есть плагин автозаполнения от Devbridge , отлично работающий для городской сферы Теперь я хочу, чтобы это работало на месте проведения мероприятия. До сих пор у меня есть JavaScript:

<script type="text/javascript">
    $(document).ready(function() {
        $('#Event_City').autocomplete({
          serviceUrl: '<%=Url.Action("GetCities", "Search") %>',
          minChars:2,
          width: 300,
          delimiter: /(,|;)\s*/,
          deferRequestBy: 150, //miliseconds
          params: { country: 'Yes' },
        });
        $('#Event_Venue').autocomplete({
          serviceUrl: '<%=Url.Action("GetVenues", "Search") %>',
          minChars:2,
          width: 300,
          delimiter: /(,|;)\s*/,
          deferRequestBy: 150, //miliseconds
          params: { city: $("#Event_City").val() },
        });
    });      
</script>

Второй автозаполнение передает дополнительный параметр (город) в действие на моем контроллере. Затем я буду использовать это, чтобы ограничить свои ответы местами в этом городе. Этот параметр получен, но не содержит текущего значения, введенного в #Event_City. Вместо этого он содержит значение по умолчанию.

Кто-нибудь знает, как оценить значение при вызове автозаполнения?

Я только начинаю с Javascript, поэтому, пожалуйста, будьте осторожны.

Спасибо

Ответы [ 2 ]

7 голосов
/ 12 мая 2009

@ Ian Mckay - чтобы получить автозаполнение для Venue для фильтрации по городу, необходимо связать событие «change» City следующим образом :

$(document).ready(function() {
    $('#Event_City').autocomplete({
      serviceUrl: '',
      minChars:2,
      width: 300,
      delimiter: /(,|;)\s*/,
      deferRequestBy: 150, //miliseconds
      params: { country: 'Yes' },
    }).change(function(){
        $('#Event_Venue').autocomplete({
          serviceUrl: '',
          minChars:2,
          width: 300,
          delimiter: /(,|;)\s*/,
          deferRequestBy: 150, //miliseconds
          params: { city: $("#Event_City").val() }
        });
    }); 
}); 
3 голосов
/ 12 мая 2009

Причина, по которой он содержит значение по умолчанию, заключается в том, что автозаполнение прикрепляется к текстовому полю при загрузке страницы. Для того, чтобы он обновлялся новым значением, плагин должен предоставить вам возможность обновить свойства объекта его параметра или позволить вам уничтожить его на втором элементе, а затем перестраивать его каждый раз, когда пользователь изменяет первый одна ценность Библиотека AutoComplete, которую вы выбрали, выглядит довольно легкой (не всегда плохо ... просто в вашем случае ...) и, кажется, не поддерживает эту функцию.

Мое лучшее предложение для вас - попробовать другую библиотеку. Мне это очень нравится, так как он довольно универсален (демонстрационная страница):

http://view.jquery.com/trunk/plugins/autocomplete/demo/

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