Ich habe einige Probleme mit einem von uns erstellten jQuery-Steuerelement. Angenommen, Sie haben eine Dropdown-Liste, in der Sie die ID des gesuchten Elements eingeben können. Wenn Sie die EINGABETASTE drücken oder den Fokus in einem Textfeld verlieren, wird über jQuery überprüft, ob die eingegebene ID korrekt ist, und es wird eine Warnung angezeigt, falls dies nicht der Fall ist 't.
Die Sache ist, dass, wenn ein gewöhnlicher Benutzer einen ungültigen Wert eingibt und durch Drücken der Senden-Schaltfläche den Fokus verliert, der jQuery-Beitrag zurückkehrt, nachdem das Senden des Formulars gesendet wurde.
Kann ich auf irgendeine Weise überprüfen, ob Async-Anforderungen von jQuery verarbeitet werden, sodass ich das Senden des Formulars nicht zulasse?
quelle
$.active
Gibt die Anzahl der aktiven Ajax-Anforderungen zurück.Mehr Infos hier
quelle
quelle
Die Funktion $ .ajax () gibt ein XMLHttpRequest-Objekt zurück. Speichern Sie dies in einer Variablen, auf die über das Ereignis "OnClick" der Schaltfläche "Senden" zugegriffen werden kann. Wenn ein Senden-Klick verarbeitet wird, überprüfen Sie, ob die Variable XMLHttpRequest lautet:
1) null, was bedeutet, dass noch keine Anfrage gesendet wurde
2) dass der readyState-Wert 4 (Loaded) ist. Dies bedeutet, dass die Anforderung erfolgreich gesendet und zurückgegeben wurde.
Geben Sie in beiden Fällen true zurück und lassen Sie die Übermittlung fortfahren. Andernfalls geben Sie false zurück, um die Übermittlung zu blockieren und dem Benutzer einen Hinweis darauf zu geben, warum die Übermittlung nicht funktioniert hat. :) :)
quelle
request.readyState > 0 && request.readyState < 4
, ob eine "aktive" Anforderung ermittelt wurde, da readyState 0 angibt, dass trotz der Erstellung des Objekts keine Webanforderung initiiert wurde .Wir müssen die Methode $ .ajax.abort () verwenden, um die Anforderung abzubrechen, wenn die Anforderung aktiv ist. Dieses Versprechenobjekt verwendet die Eigenschaft readyState , um zu überprüfen, ob die Anforderung aktiv ist oder nicht.
HTML
JS-Code
quelle