在Symfony中使用JQuery设置Input OnSubmit的值



我正在尝试设置一个onsubmit函数,该函数将使用google.maps.Geocoder使用用户输入的地址设置gps位置,我的代码如下

    <form onsubmit="getGPSLocation()">
            <input type='text' id='search_address' />
            <input type='text' id='search_lat' hidden='hidden'/>
            <input type='text' id='search_lon' hidden='hidden'/>
            <input type='submit'/>
    </form> 
    <script>
    function getGPSLocation(){
        var string = $('#search_address').val();
        var geocoder = new google.maps.Geocoder();
        geocoder.geocode({
            'address': string
        }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                var pos = results[0].geometry.location;
                $('#search_lat').attr('value',pos.lat());
                $('#search_lon').attr('value',pos.lng());
            }
        });
    }
    </script>

问题是,当我点击提交时,它确实正确调用geocoder函数,问题是:

  • 在geocoder可以向google服务器发出请求并返回坐标数据,提交函数已经重定向页面。

所以问题是:

如何延迟提交信息,直到geocoder函数成功完成其动作

您可以使用Jquery的onsubmit函数。试试下面的代码:

$('#your_form_id').submit(function() {
 var string = $('#search_address').val();
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({
        'address': string
    }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var pos = results[0].geometry.location;
            $('#search_lat').attr('value',pos.lat());
            $('#search_lon').attr('value',pos.lng());
        }
    });
    
  return;
 });

最新更新