在表单发布之前执行geolocate javascript

时间:2016-02-18 14:09:00

标签: javascript jquery geolocation

我试图在提交表单之前执行一些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;
                });
            } 

    //  }
});

1 个答案:

答案 0 :(得分:1)

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中执行某些操作,以指示正在处理表单并阻止用户在处理地理位置时再次提交