2013-12-23 2 views
1

Я пытаюсь создать функцию автозаполнения с поиском адреса, используя автозаполнение jQuery. На этот раз асинхронные запросы как пользовательские типы на самом деле не осуществимы, я использую JSON, который написан в HTML (я знаю :(!).Как изменить значение jQuery ui выбор автозаполнения (или предложить альтернативу)

Автозаполнение, похоже, работает, в этом адресе добавляются в раскрывающийся список и может быть выбрана, но проблема в том, что я хочу вырезать выбранное значение и изменить значение на входе с автозаполнением на нем.

например, если у меня есть поле под названием «address1», у которого есть автозаполнение то, когда пользователь выбирает адрес (например, «2 дороги, некоторые пригорода, некоторые города») Я только один первая часть, чтобы оставить в поле # aDDRESS1, а не полный адрес.

var addressLines; 
    var dataSource = jQuery.parseJSON($('#collectionAddresses').text()); 
    if($('#collect-address-line-one')) { 
     $('#collect-address-line-one').autocomplete({ 
      delay: 5, 
      minLength: 1, 
      select : function(event, ui){ // fires when user selects an item from the address dropdown, with click or enter for example 
       addressLines = ui.item.value.split(","); 
       var pCode = $('#collectionPostcode').val(); 
       $('#collect-address-line-one').val(addressLines[0].trim()); 
       if(addressLines[1] != null) { 
        $('input#collect-address-line-two').val(addressLines[1].trim()); 
        if(addressLines[2] != null && addressLines[2].trim() !== pCode) { 
         $('input#collect-address-line-three').val(addressLines[2].trim()); 
         if(addressLines[3] != null && addressLines[3].trim() !== pCode) { 
          $('input#collect-address-line-four').val(addressLines[3].trim()); 
         } 
        } 
       } 
      }, 
      close: function(){ // fires when the autocomplete drop down closes, eg client deletes all input or clicks away from field 
      }, 
      source : dataSource 
     }); 
    } 

У меня был код, который отбрасывает значения в функции события «закрыть», которая, казалось, сработала, но если пользователь удалил содержимое с первого входа, автозаполнение вернет значение обратно, чтобы пользователь не мог " t начните снова, если они совершили ошибку.

Поэтому я переместил этот код в событие «select», которое работает, за исключением того, что я не могу изменить значение во вводе на измельченную строку, а только полное значение адреса из виджета автозаполнения.

ответ

1

Это происходит потому, что по умолчанию в коде автозаполнения пользовательского интерфейса jQuery значение события заменяет все содержимое поля ввода. Если вы вернете false, вы предотвратите это поведение.

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