选择结果后,Google地方会使用错误的输入

时间:2015-11-04 06:03:45

标签: javascript autocomplete google-places-api

我用Googles将自己的头发拉开自动完成。 我的页面中有5个输入,我想绑定到谷歌地方自动完成。 页面加载正常,库初始化所有输入都很好。 但是,当我单击自动完成的结果时,我在调试器中意识到错误的输入字段已传递给侦听器。 以下是我初始化输入的方法:

var autocomplete = {};
var autocompletesWraps = ['from', 'destination','publish-dn','publish-an','publish-st'];
function initautocomplete(){
    //Bind the Town input fields to google apis
    directionsService = new google.maps.DirectionsService();
    for(var index=0;index<autocompletesWraps.length;index++){
        var name = autocompletesWraps[index];
        if(!document.getElementById(name)) {
                return;
        }
        autocomplete[name] = new google.maps.places.Autocomplete(document.getElementById(name), { types: ['geocode'],componentRestrictions: {country: 'nz'} });
        google.maps.event.addListener(autocomplete[name], 'place_changed', function() {
                var place = autocomplete[name].getPlace();                
                var latitude = place.geometry.location.lat();
                var longitude = place.geometry.location.lng();
                var town = place.formatted_address.split(',')[0];
                document.getElementById(name).setAttribute('data-l',latitude);
                document.getElementById(name).setAttribute('data-g',longitude);
                }
        });
    }                       
}
</script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXXXXXXXXXXXXXX&libraries=places&amp;callback=initautocomplete"></script>

当我查看调试器时,我发现它始终是我的数组autocompletesWraps的最后一个输入id,它被传递给了监听器。

enter image description here

我的选项已经用完了!如果有人能提供帮助,那就太棒了! 干杯

1 个答案:

答案 0 :(得分:0)

好的, 我通过为每个输入创建全局变量来解决这个问题。 然后在init期间逐个填充它们。 一切正常!