无法在形式隐藏字段设置值
问题描述:
我正尝试设置的隐藏字段值中的Rails 3无法在形式隐藏字段设置值
形式但是当我提交表单到我的数据库,这些theres没什么写领域。
还有就是我的JS:当我打开getGeocode()的返回值假
的隐藏字段的值置位。但是,当我将returnvalue设置为true时,不会进入数据库。
字段在模型中设置和工作,并且该函数可以通过form_for helper的onsubmit方法访问。
有人知道如何解决这个问题吗?
答
要防止的方法,从提交我加入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
}
})
})
答
由于您使用的jQuery使用:hidden
jQuery选择器。
var street = $("#player_street:hidden").val()
答
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;
})
这就是问题所在。地理编码方法是异步的。我尝试实现回调或其他东西。 – bernheart 2013-02-22 18:25:46