jQuery mit AJAX in submitHandler validieren, wird mit einem zweiten Klick eingereicht?

8

Ich bin neu bei AJAX und habe den Code dieser SO-Antwort hier verwendet jQuery Ajax POST-Beispiel mit PHP , um mit einem Formular auf einer WordPress-Website zu integrieren. Es funktioniert gut, aber ich habe Probleme bei der Integration mit jquery Validierung

Ich habe versucht, das Javascript von der obigen Seite in die Funktion submitHandler unterhalb von

zu platzieren %Vor%

Mein Formular wird beim ersten Klick bestätigt. Wenn ich dann in die Eingabe tippe und nichts einreicht, muss ich ein zweites Mal klicken, damit das Formular korrekt mit AJAX gesendet wird. Unten ist ein Kinderspiel. Jede Hilfe ist dankbar, danke.

Ein jsfiddle meines Codes dachte, es würde einen Fehler in der Konsole protokollieren, da form.php nicht verlinkt ist

    
Anagio 16.08.2013, 04:07
quelle

3 Antworten

11

Der Job des submitHandler besteht darin, das Formular einzureichen, nicht um einen Formular-Submit-Event-Handler zu registrieren.

Der submitHandler wird aufgerufen, wenn das formm submit-Ereignis ausgelöst wird, in Ihrem Fall, anstatt das Formular zu senden, in dem Sie einen submit-Handler registriert haben. Wenn das Formular-send-Ereignis zum ersten Mal ausgelöst wird, wird das Formular nicht gesendet. Wenn es zum zweiten Mal abgefeuert wird, wird zuerst das Submit-Ereignis vom Validator verarbeitet, dann wird der von Ihnen registrierte Handler ausgelöst, der die Ajax-Anforderung auslöst.

Im submitHandler müssen Sie nur die Ajax-Anfrage senden, es ist nicht nötig, den Event-Handler zu registrieren

%Vor%     
Arun P Johny 16.08.2013 04:17
quelle
3

Durch den Aufruf von $("#add-form").submit(function(){...}) wird das Formular nicht gesendet. Es bindet einen Handler, der angibt, was zu tun ist , wenn der Benutzer das Formular absendet. Deshalb müssen Sie zweimal einreichen: Das erste Mal ruft das Übergabehandler des Validierungs-Plugins auf, das die Daten überprüft und die Funktion ausführt, und das zweite Mal ruft den Übergabehandler auf, den Sie das erste Mal hinzugefügt haben.

Umgehe den Code nicht in .submit() , sondern tue es direkt in deiner submitHandler: -Funktion. Änderung:

%Vor%

zu:

%Vor%

Sie brauchen nicht event.PreventDefault() , das Validierungs-Plugin macht das auch für Sie.

    
Barmar 16.08.2013 04:17
quelle
2
%Vor%     
suhailvs 16.08.2013 04:22
quelle

Tags und Links