Passing google event data in addListener

大憨熊 提交于 2019-12-12 17:01:20

问题


I have a variable number of text fields to which I am initialising Google Maps Autocomplete dynamically.

The problem is that every time the place_changed event is fired, I need to know exactly which input box it was fired on. How can I pass this data to my saveLocation function?

Currently, event evaluates to undefined.

  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();
    },

回答1:


Possible approach:

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>


来源:https://stackoverflow.com/questions/36385559/passing-google-event-data-in-addlistener

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!