5

GoogleMap v3 AutoComplete kullanıyorum ve tamamen kaldırmalı ve tüm olay dinleyicilerini açmam gerekir. başlatılıyor ve olaylara bağlanması için benim kod aşağıdaki gibi görünür: Ben doğru otomatik tamamlama kaldırmak ve tüm olayları bağlantı kesme resmi yolu bulmuyorumGoogleMaps Otomatik Tamamlama'yı tamamen kaldırmanın doğru yolu nedir?

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

google.maps.event.addListener(autocomplete, 'place_changed', function() { 
    // handle events 
}); 

. Lütfen bana doğru yolu göster.

Teşekkürler.

cevap

8

Olayların kapatılması için google.maps.event.clearInstanceListeners kullanın.

Otomatik tamamlama işlevselliğini kaldırmak için uygulanan bir yöntem yoktur. Otomatik Tamamlama'yı oluşturmadan önce ve otomatik tamamlama işlevini kaldırmak istediğinizde, geçerli girdiyi klonla değiştirmeden önce girişin bir klonu oluşturabilirsiniz.

//-------------------------------------------------------------- 
 
     //this overides the built-in Autocomplete and adds a remove-listener 
 
     //execute it once when the API has been loaded 
 
    (function(ac) { 
 
     google.maps.places.Autocomplete = function(node, opts) { 
 
      var clone = node.cloneNode(true), 
 
      pac = new ac(node, opts); 
 

 
      google.maps.event 
 
      .addListener(pac, 
 
       'remove', 
 
       function(restore) { 
 
        google.maps.event.clearInstanceListeners(pac); 
 
        google.maps.event.trigger(node,'blur'); 
 
        google.maps.event.clearInstanceListeners(node); 
 
       if (restore===true) { 
 
        node.parentNode.replaceChild(clone, node); 
 
       } else { 
 
        node.parentNode.removeChild(node) 
 
       } 
 
       }); 
 
      return pac; 
 

 
     } 
 
     } 
 
     (google.maps.places.Autocomplete)); 
 
//-------------------------------------------------------------------------- 
 

 
    function initialize() { 
 

 
     autocomplete = new google.maps.places 
 
     .Autocomplete(document.getElementsByTagName('INPUT')[0], { 
 
      types: ["geocode"] 
 
     }); 
 
    } 
 

 
    google.maps.event.addDomListener(window, 'load', initialize);
<script src="https://maps.googleapis.com/maps/api/js?v=3&libraries=places&.js"></script> 
 
<input/> 
 
<span> 
 
    <input type="button" value="remove input" 
 
      onclick="google.maps.event.trigger(window.autocomplete,'remove'); 
 
        this.parentNode.parentNode.removeChild(this.parentNode);"/> 
 
    <input type="button" value="remove autocomplete-functionality" 
 
      onclick="google.maps.event.trigger(window.autocomplete,'remove',true); 
 
        this.parentNode.parentNode.removeChild(this.parentNode);"/> 
 
<span>

komut

Automplete en bir kaldırma-işleyicisi ekler. Dinleyici tek bir argümanı kabul eder. Otomatik tamamlama işlevini kaldırmak istediğinizde true'a ayarlayın. Aksi halde giriş tamamen kaldırılacaktır.

+0

Tam cevap için teşekkürler. Lütfen aşağıdaki yöntemlerde farkın ne olduğunu açıklayabiliriz: "clearInstanceListeners", "clearListeners" ve "removeListener". Hepsini kullanmalı mıyım yoksa 'clearInstanceListeners' kullanıyorum mı? – Erik

+0

'removeListener 'belirli bir dinleyiciyi kaldırır; clearListeners, belirli bir nesneden belirli bir olay için tüm dinleyicileri kaldırır; clearInstanceListeners, belirli bir nesneden (olay türünden bağımsız olarak) tüm dinleyicileri kaldırır. ClearInstanceListeners' –

+0

'u kullanmak için yeterli. Yardımın için teşekkürler! – Erik