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

どうすれば削除できますか?Googleプレイスのオートコンプリートを削除する方法はありませんか?

"autocomplete.unbindAll()"関数がありますが、ドロップダウンボックスのHTMLは削除されません。私は多くのajaxyのことをするページを持っているので、このドロップダウンボックスはページ上の特定の時刻に唯一のオートコンプリートがあります。

+0

「入力」とは何ですか? 'var input =(document.getElementById(' zipcode '));'のように変数として定義しましたか?もちろん –

+0

。それはhtml要素です – thelolcat

+0

あなたはいくつかのフィドルやプランカを提供することができます –

答えて

7

は物事が

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-コンテナ」)は、この$を削除する必要があり、同様

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

複数の自動補完が1ページにあるときに役立ちません。すべての' pac-container'はそれらのうちの1つだけを削除したいとします。 – Senthe

1

代わりにautocomplete.unbindAll()に電話をかけているときはどこでもかまいませんか?input.parentNode.removeChild(input)に電話をかけてください。それは本質的に優秀な答えの続きであるWhat is the correct way to completely remove GoogleMaps Autocomplete?

しかし、その質問とは異なり、あなたは '複数のドロップダウンボックス'と文句を言う。

それはあなたの本当のの問題のように思えるが、あなたが異なるinputノードに対して、何度もnew google.maps.places.Autocomplete(...)以上を呼び出していることです。あなたはそれを避けることはできませんか?新しいノードを「作成」している場合は、JS DOM APIを使用して、ドキュメントを使用する場所の「初期化済み」ノードをすぐに取得してください。一時的に見えないようにするには、非表示にします。

バインディングフレームワークを使用している場合はもう少し難しいようですが、何とか何とかしてnew Autocompleteへの呼び出しを取得する必要があります。これを仮定し

2

それは古いポストだにもかかわらず、私はそれとして、今それに答えるしたいと思います誰かを助けるだろう。

オートコンプリートインスタンスでリスナーまたはunbindall()を削除しても、自動候補が削除されず、DOMから「.pac-container」を削除することはクリーンな解決策ではありません。

自動補完の新しいインスタンスは、入力要素が自動補完インスタンスにフックされていることを意味します。したがって、自動補完インスタンスではなく入力要素のリスナーをクリアする必要があります。

google.maps.event.clearInstanceListeners(input);

関連する問題