2016-06-14 6 views
0

ich ein Formular mit verschiedenen Bereichen habe einreichen, von denen einige Onchange oder onblur Ajax Methoden. Manchmal aktualisieren diese Methoden andere Felder im Formular. Wenn Sie beispielsweise ein Feld für Mittelwert oder Standardabweichung ändern, werden andere Felder für Obere und Untere Grenze automatisch aktualisiert. Je nachdem, wie die Grenzwerte berechnet werden, kann dies einen Ausfall des Servers erfordern.Die Wahl der Reihenfolge der Ereignisse, so dass Onchange Feuer Ereignisse vor einem

Das Problem ist, kann der Benutzer auf einem Absenden klicken direkt nach einer dieser Änderungen vorgenommen haben, und in diesem Fall die onchange und senden Ereignisse werden sowohl durch den Klick ausgelöst. Dann gibt es einen Wettlauf zwischen der Ajax-Methode, die die Felder aktualisiert, die geändert werden sollten, und dem Submit, der die alten Werte der Felder übermitteln könnte.

Wie kann ich sicherstellen, dass die Reichen immer ausgelöst, nachdem die Onchange Methoden getan werden? Vielen Dank.

Antwort

1

Sie verfolgen, ob Sie eine ausstehende AJAX-Anforderung haben und wenn Sie dies tun, verhindern Sie die Standardaktion des submit -Ereignisses und legen stattdessen eine Markierung fest, dass der Benutzer versucht hat, das Formular zu senden. Wenn die letzte ausstehende Ajax-Anforderung abgeschlossen ist und Sie das Formular noch immer senden möchten, tun Sie dies programmgesteuert. Wenn nicht, sagen Sie dem Benutzer, warum Sie das nicht getan haben.

+0

Wie Sie den Überblick über herausragende AJAX-Anfragen halten? –

+0

@MikeArrh: So ziemlich, wie Sie alles im Auge behalten: Mit einer Variablen. :-) Zum Beispiel haben Sie möglicherweise eine Variable, die Ihre zentralen Ajax-Funktionen schließen, die bei "0" beginnt. Sie erhöhen es, wenn Sie einen Ajax-Aufruf starten, und dekrementieren es, wenn Sie mit einem Erfolg fertig sind (Erfolg oder Fehler). Ein Wert> 0 bedeutet, dass etwas in Bearbeitung ist. –

+0

Huh - ich sehe, dass http://stackoverflow.com/questions/1822913/how-do-i-know-if-jquery-has-an-ajax-request-pending erwähnt, dass Sie bis zu $ ​​.active in jQuery verwenden können Zählen Sie die aktiven Ajax-Anfragen. Das scheint mir viel sicherer zu sein als zu versuchen, mich selbst zu verfolgen. –

Verwandte Themen