我认为问题的症结在于<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">
,将阻止形式在首位发送(也许你是故意这样做的,因为你想用两种方法提交表单?)。
发生这个问题的原因是页面在geolocator完成它的事情之前卸载(提交表单),但这样,我们停止提交表单,并且仅在geolocator完成它的事情后才调用itsWorking()
,所以我们当我们完成了我们想做的一切工作时,请不要在itsWorking()
结束时提交表格。
如果JavaScript触发表单提交,我不明白这是可能的。你可以发布一些代码吗? – F21 2012-04-20 02:22:58
不要问关于代码的问题,然后不要显示代码。 – 2012-04-20 02:24:30
让我们看看代码。我的猜测是'getCoords'中的某些内容是异步的。 – ceejayoz 2012-04-20 02:24:49