2009-04-24 43 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