2009-04-24 117 views
1

我使用以下代码来使用Google Maps API对提供的地址进行地理编码。我们的想法是对地址进行地理编码,并在表单中传递纬度/经度,以便我的控制器动作可以使用它。不幸的是,这似乎不起作用,因为经纬度未与表格的其余部分一起提交。我究竟做错了什么?使用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()); 
        } 
       } 
      ); 
     } 
    }); 
}); 

回答

3

geocoder.getLatLong()是异步的,因此您的提交并未等待您的函数(点)被调用。

添加一个按钮(不提交课程),并附加一个单击处理程序,像这样:

$("#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

您正在提交表单,然后设置值。这不起作用。您需要设置值并提交表单。

+0

这正是我所担心的。有没有标准的解决方法呢? – 2009-04-24 09:33:31