延迟表单提交,直到检索到位置

roo*_*top 8 javascript jquery geolocation jquery-callback

我有一个试图从浏览器获取位置设置的应用程序,这往往需要一点时间,所以我希望它在页面加载时运行.但是,如果在运行位置回调之前单击"提交"按钮,则表示没有位置数据.我的问题很简单,如何在提交表单之前等待我的位置成功回调完成?(没有像睡眠声明那样愚蠢的东西).
理想情况下,我想要一个忙碌的指示灯并等待数据.这可能吗?我有一个代码可以使繁忙的指示器可见,但我不确定如何优雅地等待数据可用.

$(document).ready(function(){
    var lat = "";
    var lng = "";
    var accuracy = "";
    var locationFound = false;

    if(navigator.geolocation){
        navigator.geolocation.getCurrentPosition(function positionSuccess(loc){
            lat = loc.coords.latitude;
            lng = loc.coords.longitude;
            accuracy = loc.coords.accuracy;
            locationFound = true;               
        });
    }else{
        alert("I'm sorry, your jerk browser doesn't support geolocation");
        locationFound = true;
    }

$('#locForm').submit(function(e){  

        $('#lat').val(lat);
        $('#lng').val(lng);
        $('#boundary').val($('#boundary-select').val());
}
Run Code Online (Sandbox Code Playgroud)

luk*_*012 1

禁用提交按钮,直到位置数据被传递。

$('input[type="submit"]').attr('disabled','disabled');
Run Code Online (Sandbox Code Playgroud)

然后启用提交按钮

$('input[type="submit"]').removeAttr('disabled');
Run Code Online (Sandbox Code Playgroud)