2009-04-24 6 views
1

Ich verwende den folgenden Code, um eine angegebene Adresse mithilfe der Google Maps-API zu geocodieren. Die Idee ist, die Adresse zu geocodieren und den lat/long im Formularpost zu übergeben, damit meine Controller-Aktion es nutzen kann. Leider scheint dies nicht zu funktionieren, da die lat/long nicht mit dem Rest des Formulars eingereicht werden. Was mache ich falsch?Festlegen von Werten beim Senden von Formularen mit jQuery

$(document).ready(function() { 
    $("#search_form").submit(function(event) { 
     var address = $("#searchAddress").val(); 

     if (address != "") { 
      var geocoder = new GClientGeocoder(); 

      geocoder.getLatLng(
       address, 
       function(point) { 
        if (point) { 
         // Found address, populate hidden form fields 
         $("#searchLatitude").val(point.lat()); 
         $("#searchLongitude").val(point.lng()); 
        } 
       } 
      ); 
     } 
    }); 
}); 

Antwort

3

geocoder.getLatLong() ist asynchron, so dass Ihre Submit nicht auf Ihre Funktion (Punkt) wartet.

Fügen Sie eine Schaltfläche (a natürlich nicht vorlegen) und wie so eine Click-Handler anhängen:

$("#buttonId").click(function() { 

    var address = $("#searchAddress").val(); 

     if (address != "") { 
      var geocoder = new GClientGeocoder(); 

      geocoder.getLatLng(
       address, 
       function(point) { 
        if (point) { 
         // Found address, populate hidden form fields 
         $("#searchLatitude").val(point.lat()); 
         $("#searchLongitude").val(point.lng()); 

         $("#search_form").submit(); 

        } 
       } 
      ); 
     } 

}); 
1

Sie reichen das Formular ein und legen dann die Werte fest. Das funktioniert nicht. Sie müssen die Werte festlegen und dann das Formular absenden.

+0

Das ist, was ich hatte Angst. Gibt es eine Standardumgehung dafür? –

+0

Es gibt einige gute Vorschläge in den anderen Antworten. Du könntest in sie schauen. –

Verwandte Themen