我認爲問題的癥結在於<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