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

Posted

技术标签:

【中文标题】在表单发布之前执行地理定位 javascript【英文标题】:execute geolocate javascript before form post 【发布时间】:2016-02-18 14:09:00 【问题描述】:

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

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

【讨论】:

以上是关于在表单发布之前执行地理定位 javascript的主要内容,如果未能解决你的问题,请参考以下文章

如果用户未回答 JavaScript 地理定位小狗,如何继续执行代码?

地理定位功能中的 JavaScript 变量范围

来自移动设备的 PHP 地理定位,无需重定向

添加 HTML 表单标签时,JavaScript 执行,但神奇地消失了

在 Google Apps 脚本中提交 HTML 表单时如何发送地理定位和输入

同时使用地理定位和地理编码 - Javascript