Wie lösche ich die Eingabe, die an die Google Places Autocomplete gebunden ist?
Hier ist mein Problem: ich bin mit Google Places Autocomplete zum sammeln von Informationen über Orte, die von der Benutzer.
Auf der Veranstaltung "place_changed", habe ich diese Informationen speichern. Jedoch möchte ich dem Benutzer die Möglichkeit, mehrere Orte. Also nach diesem Ort wurde speichern, ich will zum löschen der Eingabe.
Jedoch Google Autocomplete automatisch ersetzen Sie den letzten Eintrag in das Eingabefeld. Irgendwie loswerden?
Details :
var inputDiv = $('#myinput');
var options = {
types: ['(cities)']
};
var autocomplete = new google.maps.places.Autocomplete(inputDiv[0], options);
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var places = autocomplete.getPlace();
savePlaces(places);
console.log(inputDiv.val()); //'Paris, France'
inputDiv.val('');
console.log(inputDiv.val()); //(an empty string)
setTimeout(function() {
console.log(inputDiv.val()); //'Paris, France' (It's back!)
inputDiv.val('');
console.log(inputDiv.val()); //(an empty string)
}, 1);
setTimeout(function() {
console.log(inputDiv.val()); //(an empty string)
}, 10);
}
Können Sie mir sagen, gut, sieht gut aus, nur klar, dass es in den timeout.
ABER wenn ich Sie Weg von der Eingabe (es den Fokus verliert). Der Letzte Eintrag kommt immer wieder!
Irgendeine Idee um das zu beheben?
Ich habe nicht gefunden in der Google-Dokumentation zu einer Funktion wie
autocomplete.clear();
Dank!
InformationsquelleAutor der Frage Tristan | 2013-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass die AutoVervollständigen-intern hört das blur-Ereignis der Eingabe, so können ihm etwas zu hören und deaktivieren Sie das Feld " nach:
InformationsquelleAutor der Antwort Dr.Molle
Den bisherigen Begriff bleibt in der autocomplete-Objekt.
Lösung: Deaktivieren Sie das Feld "Eingabe", dann erstellen Sie eine neue AutoVervollständigen-Objekt. Auch sicher sein, zu entfernen vorhergehenden Ereignis-Listener.
Erklärung:
Klar:
Vorherigen autocomplete-Objekt werden soll Müll gesammelt. Bitte korrigieren Sie mich, wenn ich falsch Liege. Werden Sie sicher, dass Sie setzen Speicherlecks, können Sie manuell löschen.
InformationsquelleAutor der Antwort Shu
klaren Ort, den Sie verwenden können :
löst place_change Ereignis zu.
InformationsquelleAutor der Antwort grogro
Nicht sicher, ob dieses problem ist immer noch rund, aber ich fand eine Lösung, die für mich gearbeitet
$dies ist ein jQ Verweis auf das AutoVervollständigen-Feld.
Das blur-Ereignis wird ausgelöst, wenn Sie geben in Ihrem Wert und Reiter in der AutoVervollständigen-Liste und drücken Sie die EINGABETASTE.
Wenn Sie klicken Sie irgendwo mit der Maus, das blur-Ereignis wird ausgelöst, und deaktivieren Sie das Feld.
Wenn Sie mit der Maus direkt nach der Eingabe wählen Sie Ergebnis, die Unschärfe ist nicht ausgelöst. Dann das Zeitlimit entfernen Sie den Wert aus dem Feld.
Wie es scheint, eine lächerliche hack deaktivieren Sie das Feld nach der Eingabe, aber ich verbrachte 4 Stunden Suche im Netz und suchen, obwohl die api von google und konnte Sie nicht finden eine bessere Lösung.
InformationsquelleAutor der Antwort Mattijs
Als eine leichte Verbesserung zu Dr. Molle ausgezeichnete Antwort, die Sie können verwenden Sie die z-index-Eigenschaft, um zu arbeiten, um das flash-zumindest in neueren Browsern:
InformationsquelleAutor der Antwort
Für ein besseres internet...
Einfach auslösen, die Unschärfe, aufrufen von Google Places zu tun sein Geschäft. Führen Sie dann Ihre Logik.
Wenn das blinken der Google-Wert ist ein problem, versuchen die Verkettung Ihrer nächsten Aktion, wenn möglich.
InformationsquelleAutor der Antwort Dave Jellison
Versuchen:
oder
Ich bin nicht sicher, warum bist du mit
inputId_div[0]
. Ich denke, es muss ein jQuery-Sache.InformationsquelleAutor der Antwort Marcelo