我正在使用以下代码使用Google Maps API对提供的地址进行地理编码。我的想法是对地址进行地理编码并在表单中传递lat / long,以便我的控制器操作可以使用它。不幸的是,这似乎不起作用,因为lat / long没有与表格的其余部分一起提交。我做错了什么?
$(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());
}
}
);
}
});
});
答案 0 :(得分: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 :(得分:1)
您正在提交表单,然后设置值。这不起作用。您需要设置值,然后提交表单。
答案 2 :(得分:0)
jQuery form plug-in会让您的生活更轻松。您可以使用beforeSubmit事件。