Ho un'applicazione che tenta di ottenere le impostazioni delle posizioni dal browser, questo tende a richiedere un po 'di tempo quindi voglio che venga eseguito quando la pagina viene caricata. Tuttavia, se si fa clic sul pulsante di invio prima dell'esecuzione della richiamata sulla posizione, non si dispone di dati sulla posizione. La mia domanda è semplice, come posso aspettare che il callback della mia posizione sia terminato prima di inviare il mio modulo? (senza qualcosa di sciocco come una dichiarazione di sonno).
Idealmente mi piacerebbe lampeggiare un indicatore occupato e attendere i dati. È possibile? Ho il codice per rendere visibile un indicatore occupato, ma non sono sicuro di come posso aspettare con eleganza che i dati siano disponibili.Invio del modulo di ritardo fino a quando non viene recuperata la posizione
$(document).ready(function(){
var lat = "";
var lng = "";
var accuracy = "";
var locationFound = false;
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function positionSuccess(loc){
lat = loc.coords.latitude;
lng = loc.coords.longitude;
accuracy = loc.coords.accuracy;
locationFound = true;
});
}else{
alert("I'm sorry, your jerk browser doesn't support geolocation");
locationFound = true;
}
$('#locForm').submit(function(e){
$('#lat').val(lat);
$('#lng').val(lng);
$('#boundary').val($('#boundary-select').val());
}
Credo che questo sia un buon ripiego, ma mi piacerebbe molto meglio che il pulsante abilitato e introdurre un ritardo dopo aver fatto clic sul pulsante piuttosto che dover avere il pulsante disabilitato per un po 'al caricamento della pagina. – rooftop