2012-04-06 4 views
1

У меня есть следующая функция для автозаполнения входа:Получить дополнительный параметр из массива JSON из автозаполнения плагин

$("#auto").autocomplete({ 
     source:"/autocomplete.php", 
     minLength: 5, 
     _renderItem: function(ul, item) { 
      return $("<li></li>") 
       .data("item.autocomplete", item) 
       .append($("<a></a>").text(item.label)) 
       .appendTo(ul); 
      } 

}); 

Массив JSON содержит 3 параметра (значение, этикетки, за дополнительную плату). Как я могу захватить третий параметр и добавить его к другому тексту ввода сразу после выбора элемента из списка автозаполнения?

ответ

1

Используйте событие select.

Обработчик события получает передаются два параметра:

  • объект события
  • ui объект, который содержит данные выбранного элемента в ui.item

Пример:

$("#auto").autocomplete({ 
     source:"/autocomplete.php", 
     minLength: 5, 
     select: function(e, ui) { 
      // "ui.item" is the data item 
      alert(ui.item.extra); 
     }  
}); 

Кстати, как вы пытаетесь переопределить метод _renderItem не является правильным, оно должно быть:

$("#auto").autocomplete({ 
    source:"/autocomplete.php", 
    minLength: 5, 
}) 
.data('autocomplete') 
._renderItem = function(ul, item) { 
    return $("<li></li>") 
     .data("item.autocomplete", item) 
     .append($("<a></a>").text(item.label)) 
     .appendTo(ul); 
}; 
1
select: function(e, ui) { 
     $('input#anotherInputTextId').val(ui.item.extra) ; 
    }  
+0

Вы должны рассмотреть объяснить, как это помогает. Ответы с деталями, скорее всего, будут сохранены. Это также помогает другим понять, почему ваш ответ правильный, когда есть объяснение, чтобы пойти с ним. Добро пожаловать в SO! – jmort253

+1

Угадайте, что у меня должно получиться .. спасибо .. добавим подробности после уточнения –

+0

Эта функция будет активирована при выборе, используя val(), вы можете заменить существующее значение, передав ему значение. E используется для захвата события для ведения бизнес-логики. –

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