Javascript 提交表格前谷歌地理编码

Javascript 提交表格前谷歌地理编码,javascript,forms,google-maps,Javascript,Forms,Google Maps,这似乎是一个愚蠢的问题,但它让我忙了一整天 我想实现的是在提交搜索表单之前使用谷歌地理编码器对地址进行地理编码 我有以下代码: <form name="myForm" id="myForm"> <input type="text" name="address" id="address" /> <input type="hidden" name="lat" id="lat" /> <input type="hidden" name=

这似乎是一个愚蠢的问题,但它让我忙了一整天

我想实现的是在提交搜索表单之前使用谷歌地理编码器对地址进行地理编码

我有以下代码:

<form name="myForm" id="myForm">
    <input type="text" name="address" id="address" />
    <input type="hidden" name="lat" id="lat" />
    <input type="hidden" name="lng" id="lng" />
    <input type="submit" name="submit" />
</form>


$('#myForm').submit(function(){
    var a = $('#address').val();
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({"address" : a }, function(result, status){
        // Extract latitude and longitude
        $('#lat').val(latitude);
    });
});

$('#myForm')。提交(函数(){
var a=$('#address').val();
var geocoder=new google.maps.geocoder();
geocoder.geocode({“address”:a},函数(结果,状态){
//提取经纬度
$('#lat').val(纬度);
});
});
除了在设置
lat
lng
之前提交表单外,一切正常

谁能解释一下我的问题吗

提前谢谢

更新:


我还尝试过在表单中使用提交按钮上的
onclick
onsubmit
和jQuery
.validator()
首先要阻止表单提交;否则,这可能会比异步地理代码请求完成的速度更快

$('#myForm').submit(function(event){
    event.preventDefault();
    ...
});
然后,您希望将表单提交移动到地理编码响应处理程序中

geocoder.geocode({"address" : a }, function(result, status){
    ...
    $('#myForm').submit();
});
我认为,接下来的问题是对表单submit的递归调用。因此,我建议不要让事件处理程序出现在表单submit上,而是点击submit按钮(这可能是一种更简洁的方法)。阻止提交按钮的默认操作,但仍允许我们提交表单

<input type="submit" name="submit" id="submitButton" />

$('#submitButton').on('click', function(event){
    event.preventDefault();
    var a = $('#address').val();
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({"address" : a }, function(result, status){
        // Extract latitude and longitude
        $('#lat').val(latitude);
        $('#myForm').submit();
    });
});

$('submitButton')。在('click',函数(事件){
event.preventDefault();
var a=$('#address').val();
var geocoder=new google.maps.geocoder();
geocoder.geocode({“address”:a},函数(结果,状态){
//提取经纬度
$('#lat').val(纬度);
$('#myForm')。提交();
});
});

非常有魅力,感谢您的明确解释:)