Verzögerung der Formularübergabe, bis der Standort abgerufen wird

8

Ich habe eine Anwendung, die versucht, Lokationseinstellungen vom Browser zu bekommen, dies dauert eine Weile, also möchte ich, dass sie beim Laden der Seite ausgeführt wird. Wenn Sie jedoch auf die Schaltfläche Absenden klicken, bevor der Standort-Rückruf ausgeführt wurde, haben Sie keine Standortdaten. Meine Frage ist einfach: Wie warte ich auf den Rückruf meines Standort-Erfolgs, bevor ich mein Formular abschicke? (ohne etwas albern wie eine Schlafanweisung).
Im Idealfall möchte ich eine Besetztanzeige blinken lassen und auf die Daten warten. Ist das möglich? Ich habe den Code, um eine Besetztanzeige sichtbar zu machen, bin mir aber nicht sicher, wie ich elegant darauf warten kann, dass die Daten verfügbar sind.

%Vor%     
rooftop 02.05.2012, 01:41
quelle

4 Antworten

1

Deaktivieren Sie die Senden-Schaltfläche, bis die Standortdaten übergeben wurden.

%Vor%

Aktivieren Sie dann die Senden-Schaltfläche

%Vor%     
luke2012 02.05.2012, 01:50
quelle
1

Wenn das von Ihnen verwendete Standort-Plugin keine Callback-Funktion zur Verfügung hat, müssen Sie die Ergebnisse irgendwie an die Seite binden und überprüfen, bevor der Benutzer sie absetzt.

Eine Möglichkeit besteht darin, die Ergebnisse des Standorts an das Formular zu binden und das Formular nur dann zuzulassen, wenn sich dort ein Standort befindet. Hier ist ein Beispiel für die Verwendung von .data() , um dies zu erreichen.

%Vor%

Diesen Code hinzugefügt, der jede Sekunde nach einem Wert in Ihrem Standort-Plugin prüft:

%Vor%     
Control Freak 02.05.2012 01:51
quelle
0

Verwenden Sie zwei Semaphore:

%Vor%

Auf diese Weise sieht der Benutzer das Ladebild nur, wenn die Geodaten zum Zeitpunkt des Sendens des Formulars noch nicht vollständig geladen wurden. Sie werden feststellen, dass es egal ist, welches Ereignis zuerst ausgelöst wird, es wird nur durchlaufen, wenn beide fertig sind.

    
rkw 02.05.2012 05:44
quelle
0

HTML

%Vor%

Javascript

%Vor%     
Avrahm Kleinholz 20.02.2018 02:50
quelle