我正在使用jQuery表单插件在提交表单前调用函数。 该函数调用Google Geocoder服务,该服务查找地址的坐标,并在表单中设置隐藏坐标字段的值。 似乎在beforeSubmit回调完成之前提交表单。这是正常的吗?这种形式是否应该等待beforeSubmit回调完成? 这样做的最佳方式是什么?jQuery表单插件问题
感谢
的JavaScript
$(function(){
$("#submit").click(function() {
var options = {
beforeSubmit: getPosition, // pre-submit callback
success: showResponse // post-submit callback
};
// bind form using 'ajaxForm'
$('#addresto').ajaxForm(options);
});
});
function getPosition() {
var geocoder = new GClientGeocoder();
var country = $("#id_country").val();
var city = $("#id_city").val();
var postal_code = $("#id_postal_code").val();
var street_number = $("#id_street_number").val();
var street = $("#id_street").val();
var address = street_number+", "+street+", "+postal_code+", "+city+", "+country;
geocoder.getLatLng(address, function(point) {
if (point) {
alert(point);
$("#id_latitude").val(point.lat())
$("#id_longitude").val(point.lng())
} else {
alert("Geocode was not successful");
}
});
return true;
}
function showResponse() {
alert('response');
}
HTML
<form id="addresto" action="" method="POST">
<!-- some city, country, street... fields -->
<input type="Submit" id="submit" value="Submit" />
</form>
很好的答案,你正确的getLatLng()。 解决方案1有点冒失,并不完全防弹,例如,如果该功能突然出现真实情况并且用户在此之前提交,该怎么办? 我将在新的答案中阐述第二种解决方案。 – 2009-12-10 12:29:00