2015-10-10 4 views
6
var autocomplete = new google.maps.places.Autocomplete(input, { 
    types: ['geocode'] 
}); 

Wie entferne ich es jetzt?Keine Möglichkeit, Google Places Autocomplete zu entfernen?

Es gibt "Autocomplete.unbindAll()" -Funktion, aber es entfernt nicht den HTML-Code für die Dropdown-Box. Ich habe eine Seite, die eine Menge Ajaxy-Sachen macht und aufgrund dieser Dropdown-Liste werden immer neue Einträge hinzugefügt, obwohl nur eine automatische Vervollständigung zu einer bestimmten Zeit auf der Seite vorhanden ist: |

+0

Worauf bezieht sich "Eingabe"? Haben Sie es als Variable definiert, zum Beispiel 'var input = (document.getElementById (' zipcode '));'? –

+0

natürlich. Es ist ein HTML-Element – thelolcat

+0

können Sie einige Geige oder Plünderer –

Antwort

7

dies Unter der Annahme, wie sich die Dinge auch

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

Google Maps APIs bieten auch removeListener und clearInstanceListeners zur Entfernung initialisiert. https://developers.google.com/maps/documentation/javascript/reference#event

auch als optionaler Schritt, sollten Sie diese $ entfernen („pac-Container“) als auch

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

Das hilft jedoch nicht, wenn Sie mehrere Autocompleten auf einer Seite haben, da alle' pac-container' entfernt werden Sie möchten nur einen von ihnen entfernen. – Senthe

1

Wo immer Sie jetzt anrufen autocomplete.unbindAll() statt (auch?) Rufen Sie input.parentNode.removeChild(input)? Das ist im Wesentlichen, was in der ausgezeichneten Antwort auf What is the correct way to completely remove GoogleMaps Autocomplete?

geht Aber im Gegensatz zu dieser Frage, beschweren Sie sich über mehrere Dropdown-Boxen.

Es ist wie Ihr echte Problem scheint, ist, dass Sie mehr new google.maps.places.Autocomplete(...)als einmal gegen verschiedene input Knoten sind aufgerufen wird. Kannst du das nicht vermeiden? Wenn Sie einen neuen Knoten "erstellen", ziehen Sie einfach den Knoten "Initialized" mit der JS DOM API an den Speicherort im Dokument, an dem Sie ihn jetzt verwenden möchten. Verstecken Sie es, wenn Sie es vorübergehend außer Sichtweite haben wollen.

Es scheint ein bisschen schwieriger, wenn Sie ein bindendes Framework verwenden, aber Sie müssen diesen Aufruf an new Autocomplete von dem bekommen, was es tut, irgendwie.

2

Auch wenn es eine alte Post ist, würde Ich mag es, wie es jetzt beantworten würde jemandem helfen.

Durch das Entfernen der Listener oder unbindall() bei Autocomplete-Instanz werden die automatischen Vorschläge nicht entfernt und das Entfernen des ".pac-containers" aus DOM ist keine saubere Lösung.

Die neue Instanz der automatischen Vervollständigung bedeutet, dass das Eingabeelement mit der Autocomplete-Instanz verknüpft ist. Daher müssen die Listener für das Eingabeelement und nicht für die Autocomplete-Instanz gelöscht werden.

google.maps.event.clearInstanceListeners (Eingabe);

Verwandte Themen