我试图在提交表单之前执行一些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;
});
}
// }
});
答案 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中执行某些操作,以指示正在处理表单并阻止用户在处理地理位置时再次提交