在表单发布之前执行地理定位javascript

在表单发布之前执行地理定位javascript,javascript,jquery,geolocation,Javascript,Jquery,Geolocation,我试图在提交表单之前执行一些jquery 目的是获取用户位置,并在表单发布之前保存坐标 但它发生得太快了,而且似乎没有完全执行。 “共享位置”弹出窗口会在一瞬间显示表单帖子,然后我才能回答“是”共享位置 $("#DepotSearchForm").submit(function () { // your code here if (navigator.geolocation) { navigator.geolocati

我试图在提交表单之前执行一些jquery

目的是获取用户位置,并在表单发布之前保存坐标

但它发生得太快了,而且似乎没有完全执行。 “共享位置”弹出窗口会在一瞬间显示表单帖子,然后我才能回答“是”共享位置

$("#DepotSearchForm").submit(function () {


        // your code here

            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(function (position) {
                    var pos = {
                        lat: position.coords.latitude,
                        lng: position.coords.longitude
                    };
                    $('#Latitude').val(position.coords.latitude);
                    $('#Longitude').val(position.coords.longitude);
                    alert(position.coords.latitude + ", " + position.coords.longitude);
                    //gmap.setCenter(pos);
                }, function () {
                    //alert("Unable to determine location");
                    //return false;
                });
            } 

    //  }
});

geolocation
是异步的,因此您的表单确实是在完成之前提交的

选择是在页面加载时设置位置值,或者可以阻止jQuery提交事件,并在地理位置完成时使用本机提交

$("#DepotSearchForm").submit(function(event) {
  // prevent jQuery submit occurrung
  event.preventDefault();
  var form = this;    

  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {

      $('#Latitude').val(position.coords.latitude);
      $('#Longitude').val(position.coords.longitude);
      alert(position.coords.latitude + ", " + position.coords.longitude);

      // tigger native submit
      form.submit();

    }, function() {
       // handle geolocation error
    });
  }
});
您还应该在UI中执行一些操作,以指示正在处理表单,并防止用户在处理地理定位时再次提交表单