无法删除谷歌地方自动完成?

时间:2015-10-10 01:31:23

标签: javascript google-maps google-places-api

var autocomplete = new google.maps.places.Autocomplete(input, {
  types:  ['geocode']
});

如何立即将其删除?

有“autocomplete.unbindAll()”函数,但它不会删除下拉框的HTML。我有一个页面,它做了很多ajaxy的东西,因为这个下拉框仍然被添加,即使在页面上的给定时间只有一个自动完成:|

5 个答案:

答案 0 :(得分:16)

假设这是事情的初始化方式

var autocomplete = new google.maps.places.Autocomplete(input, {types: ['geocode']});
var autocompleteLsr = google.maps.event.addListener(autocomplete, 'place_changed', function() { ... });

google maps API还提供removeListener和clearInstanceListeners以供删除。 https://developers.google.com/maps/documentation/javascript/reference#event

作为可选步骤,您应该删除此$(" .pac-container")以及

google.maps.event.removeListener(autocompleteLsr);
google.maps.event.clearInstanceListeners(autocomplete);
$(".pac-container").remove();

答案 1 :(得分:3)

虽然这是一篇旧帖子,但我现在想回答它,因为它可以帮助某人。

删除自动完成实例上的侦听器或unbindall()不会删除发生的自动建议,从DOM中删除“.pac-container”并不是一个干净的解决方案。

自动完成的新实例意味着输入元素与自动完成实例挂钩,因此我们必须清除输入元素的侦听器而不是自动完成实例。

  

google.maps.event.clearInstanceListeners(输入);

答案 2 :(得分:1)

无论您现在拨打factor而不是(也是?),请致电autocomplete.unbindAll()?这基本上是对What is the correct way to completely remove GoogleMaps Autocomplete?

的出色回答所发生的事情

然而,与该问题不同,您抱怨多个下拉框'。

您的真正的问题似乎是您针对不同的input.parentNode.removeChild(input)节点不止一次地调用new google.maps.places.Autocomplete(...) 。你能避免吗?你在哪里创造'一个新的节点,只需拉出“初始化的”'现在,使用JS DOM API将节点定位到文档中要使用它的位置。如果您暂时想要它,请将其隐藏起来。

如果您正在使用绑定框架,这似乎有点困难,但是您必须以某种方式从它所做的任何事情中调用input

答案 3 :(得分:0)

我发现,当您使用$(".pac-container").remove();时,直到您刷新或更改页面后,自动完成功能才会再次显示。因此,它不适用于SPA。我发现您可以使用它,并且效果很好:

autocomplete.addListener('place_changed', function () {
    $('.pac-item').remove();
  });

答案 4 :(得分:0)

隐藏Google自动填充下拉菜单建议

隐藏建议:

 $(".pac-container").css("visibility", "hidden");

显示建议:

 $(".pac-container").css("visibility", "visible");

要基于jquery事件触发隐藏或可见:

 $("#location").on("keydown click keyup keypress blur change focus", function(){

        if(!$('#geoAutocomplete').is(":checked")){
            $(".pac-container").css("visibility", "hidden");
        }else{
            $(".pac-container").css("visibility", "visible");
        }

    });

注意:我有一个ID为geoAutocomplete的复选框,供用户打开和关闭自动完成功能。