2016-04-03 2 views
2

У меня есть переменное количество текстовых полей, в которые я инициализирую Autocomplete Google Maps динамически.Передача данных о событиях google в addListener

Проблема в том, что каждый раз, когда увольняется событие place_changed, мне нужно точно знать, в каком окне ввода он был запущен. Как я могу передать эти данные в мою saveLocation?

В настоящее время Событие оценивает по неопределенным.

initAutocomplete = function (element) { 
     autocomplete = new google.maps.places.Autocomplete(
      /** @type {!HTMLInputElement} */(element), {}); 

     autocomplete.addListener('place_changed', saveLocation); 
    }, 

    saveLocation = function (event) { 
     console.log(event); 
     var place = autocomplete.getPlace(); 
    }, 

ответ

3

Возможный подход:

var initAutocomplete = function (element) { 
 
    var autocomplete = new google.maps.places.Autocomplete(element); 
 
    google.maps.event.addListener(autocomplete, 
 
           'place_changed', 
 
           function(){saveLocation.call(autocomplete,element)}); 
 
}, 
 

 
saveLocation = function (element) { 
 
     document.getElementsByTagName('code')[0] 
 
      .innerHTML=element.getAttribute('name'); 
 
     var place = this.getPlace(); 
 
     
 
}; 
 

 
google.maps.event.addDomListener(window, 'load', function(){ 
 
    var inputs=document.querySelectorAll('.pac'); 
 
    for(var i=0;i<inputs.length;++i){ 
 
    initAutocomplete(inputs.item(i)); 
 
    } 
 
});
<code></code><br/> 
 
<input class="pac" name="field1">field1<br/> 
 
<input class="pac" name="field2">field2<br/> 
 
<input class="pac" name="field3">field3<br/> 
 

 
<script src="https://maps.googleapis.com/maps/api/js?v=3&libraries=places"></script>

+0

Спасибо, я дам это попробовать и получить обратно – emkay

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