2013-02-22 44 views
0

我正嘗試設置的隱藏字段值中的Rails 3無法在形式隱藏字段設置值

形式但是當我提交表單到我的數據庫,這些theres沒什麼寫領域。

還有就是我的JS:當我打開getGeocode()的返回值假

的隱藏字段的值置位。但是,當我將returnvalue設置爲true時,不會進入數據庫。

字段在模型中設置和工作,並且該函數可以通過form_for helper的onsubmit方法訪問。

有人知道如何解決這個問題嗎?

回答

0

要防止的方法,從提交我加入ev.preventDefault()與$設定值後恢復的方法(「# new_player「)。unbind('submit')。submit()

$("#new_player").submit(function(ev) { 

    ev.preventDefault(); 

    geocoder = new google.maps.Geocoder(); 
    var street = $("#player_street").val() 
    var postalcode = $("#player_postalcode").val() 
    var city = $("#player_city").val() 
    var address = street + ", " + postalcode + ", " + city 
    var lat 
    var lng 

    geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     lat = results[0].geometry.location.hb 
     lng = results[0].geometry.location.ib 
     $("#player_lat:hidden").val(lat) 
     $("#player_lng:hidden").val(lng) 

     $("#new_player").unbind('submit').submit() 

     } else { 
     alert("Dein Player konnte nicht eingetragen werden, bitte probiere es noch einmal.") 
     return false 
     } 
    }) 
}) 
0
geocoder.geocode(... 

是異步函數。所以它會在一段時間後收到響應併爲字段設置值,而getGeocode()函數的其餘代碼仍在運行。

如果您在函數中返回true,則在地理編碼器返回結果之前提交表單。如果返回false,則提交被取消並設置值。

所以,你需要在回調提交數據,是這樣的:

$(#the_form_id).submit(function() { 

    geocoder = new google.maps.Geocoder(); 
    var street = $("#player_street").val() 
    var postalcode = $("#player_postalcode").val() 
    var city = $("#player_city").val() 
    var address = street + ", " + postalcode + ", " + city 
    var lat 
    var lng 


    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     lat = results[0].geometry.location.hb 
     lng = results[0].geometry.location.ib 
     $("#player_lat").val(lat) 
     $("#player_lng").val(lng) 
     $(#the_form_id).unbind('submit').submit(); 
    } else { 
     return false 
     alert("Dein Player konnte nicht eingetragen werden, bitte probiere es noch einmal."); 
    } 
    }); 
    return false; 
}) 
+0

這就是問題所在。地理編碼方法是異步的。我嘗試實現回調或其他東西。 – bernheart 2013-02-22 18:25:46

相關問題