我认为您的问题的症结在于,<input type="image">
将提交一份表格,就像<input type="submit">
会一样。
但是,要按原样解决此问题,请将event
其作为参数添加到getUserLocation(event)
.
然后按如下方式编辑您的 JavaScript:
function getUserLocation(event) {
event.preventDefault(); // prevents form from submitting
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(itsWorking, notWorking);
}
else {
alert("Dang! Your browser doesn't support finding your location, use the zipcode method below.");
}
};
function itsWorking(position) {
var lat = position.coords.latitude;
var longi = position.coords.longitude;
var finalLat = Math.round(lat*1000000)/1000000
var finalLong = Math.round(longi*1000000)/1000000
$("#longi").val(finalLong);
$("#lati").val(finalLat);
document.getElementById('findoneform').submit(); // submits form since we were successful
};
但就像我最初所说的那样,如果您使用img
标签而不是,这似乎<input type="image">
会阻止表单首先发送(也许您是故意这样做的,因为您希望有两种提交表单的方法?)。
发生这个问题是因为页面在地理定位器完成它的事情之前卸载(提交表单),但是这样,我们停止提交表单,并且itsWorking()
只有在地理定位器完成它的事情之后才被调用,所以我们不提交形成,直到itsWorking()
我们完成了我们想做的一切。