【问题标题】:Trigger google maps autocomplete on focus out [duplicate]聚焦时触发谷歌地图自动完成[重复]
【发布时间】:2014-06-29 09:12:39
【问题描述】:

如何重现问题:

在这个页面上 https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform

选择一些地址,例如20 Water Street, New York City, NY, United States,(正如预期的那样,这些字段正在填充信息)。现在,例如在地址更改 20 到 10 中,而不是从建议的列表中选择地址,只需单击页面上的某个位置。建议列表消失,新地址10 Water Street, New York City, NY, United States 保留在输入字段中,但字段信息未更新。

我正在使用它来获取纬度和经度。所以,如果用户不是点击地址,而是点击外面,看起来,他改变了地址,但实际上我仍然会有之前地址的 Lat 和 Lng。

这里是初始化函数

var autocomplete;
function initialize() {
    autocomplete = new google.maps.places.Autocomplete(
    /** @type {HTMLInputElement} */
    (document.getElementById('addressAutocomplete')), {
        types : [ 'geocode' ]
    });

    google.maps.event.addListener(autocomplete, 'place_changed', function() {
        var place = autocomplete.getPlace();
        console.log(place);
    });
}

我在想这样的东西可以工作,但它没有,这条线console.log(place);输出未定义

$(document).ready(function() {
    $(document).on('focusout', '#addressAutocomplete', function() {
        google.maps.event.trigger(autocomplete, 'place_changed', {});
    });
});

谢谢

【问题讨论】:

  • 所以您想在输入字段失去焦点时自动选择第一个建议?
  • @Dr.Molle 就我的尝试而言,看起来是的,但我不确定这是否适用于所有情况。谢谢
  • 得到var place = autocomplete.getPlace();的回复检查这个jsfiddle.net/BBzk6 ..
  • 这有什么更新吗?我也面临同样的问题。
  • @AlexandreBourlier,很遗憾没有...

标签: javascript jquery google-maps google-maps-api-3


【解决方案1】:

我有一个类似的问题(给定字段中的任何内容都应该是有效的 Google 地图地址),并且基于 Alexandre Boulier 的建议链接构建了一个受此启发的解决方案,这可能会对您有所帮助。这个想法是:

  • 当用户执行其他操作而不是单击 Google 地图建议时
  • 触发事件以将焦点移至第一个建议
  • 触发事件选择它

我为自己的代码复制结果(使用 Jquery):

//// Ensuring that only Google Maps adresses are inputted
function selectFirstAddress (input) {
    google.maps.event.trigger(input, 'keydown', {keyCode:40});
    google.maps.event.trigger(input, 'keydown', {keyCode:13});
}

// Select first address on focusout
$('#content').on('focusout', 'input#xxx__zzz', function() {
    selectFirstAddress(this);
});

// Select first address on enter in input
$('#content').on('keydown', 'input#xxx__zzz', function(e) {
    if (e.keyCode == 13) {
        selectFirstAddress(this);
    }
});

它对我有用,我希望它有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 2016-11-17
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    相关资源
    最近更新 更多