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