2016-11-30 5 views
0

Ich habe mich umgesehen und viele ähnliche Antworten gefunden, aber das Formular, das ich in meinem Code habe, schlägt fehl. Was scheint zu fehlen oder inkorrekt zu sein, um zu verhindern, dass das Formular übermittelt wird, wenn auf "Senden" -Buttons geklickt und mit SweetAlert bestätigt wird?Lebenslauf Formular einreichen nach PreventDefault

http://plnkr.co/edit/NL7r4E9UKVjGSBbAwt86?p=preview

<form id='submissionForm' autocomplete='off' method='POST'> 
     <button>Save</button> 
     <input type='submit' name='submit' id='submitTest1' value='Submit 1'> 
     <input type='submit' name='submit' id='submitTest2' value='Submit 2'> 
    </form> 

Klick auf "Ja, ich bin sicher", dann "Ok" nicht das Formular abzuschicken.

UPDATE: ich den Code vereinfacht haben: http://plnkr.co/edit/A9aDycYhIkJcTmK5qIUS?p=preview

Antwort

3

Das Formularelement hat eine Methode namens submit, hat aber auch die Formularelemente in der Form als Mitglieder.

Wenn Sie eine button in der Form submit haben, können Sie darauf unter Verwendung document.form1.submit zugreifen. Da dies derselbe Name wie die Methode submit ist, gibt es keine Möglichkeit mehr, auf diese Methode zuzugreifen. Wenn Sie die Methode verwenden, um das Formular zu senden, wird das nicht mehr funktionieren.

verwenden plunker:

HTML:

<form id='submissionForm' autocomplete='off' method='POST'> 
     <button>Save</button> 

     <input type='submit' name='submit1' id='submitTest1' value='Submit 1'> 
     <input type='submit' name='submit2' id='submitTest2' value='Submit 2'> 
    </form> 
+0

vispan hat das Problem gut erkannt. –

+0

Ausgezeichnet! Vielen Dank! – theflarenet

0

Ihr Formular Objekt ist eine einfache JavaScript-Objekt und haben keinen Zugriff auf die jQuery-Methode vor.

Wickeln Sie die Objektform in einem jQuery-Wrapper $(form).submit()

Nicht sicher, ob Vanille JavaScript eine Anforderung ist, wie ich, dass jQuery sah in der plnkr enthalten war, aber ich getestet jQuery mit submit() Methode anstelle der JavaScript-Methode , und es hat funktioniert.

Wenn Sie das Formular Variable zu erstellen, machen this ein jQuery-Objekt var form = $(this);

+0

submit() ist auch ein Standardverfahren JS. –

+0

Wahr, aber mit der Submit-Methode von jQuery wird das Formular übergeben. Vielleicht sollte ich diese Antwort umschreiben – JB06

2

Verwendung removeEventListener die Ereignishandler zu entfernen, bevor das zweite Mal einreichen.

Hier ist die aktualisierte Geige: http://plnkr.co/edit/lXUtzlMISxztGVvucFQS?p=preview

Wie in der Antwort erwähnt, ist die Tatsache, dass Sie Formularelemente namens „Eintragen“ überschreibt die .submit() Methode haben. Sie sollten vermeiden, "submit" als einen Namen in Ihren Senden-Schaltflächen zu verwenden. ändere das und es sollte funktionieren.

+0

Damit bekomme ich noch 'Uncaught TypeError: form.submit ist keine Funktion' in der Konsole beim Klick auf" OK "der Erfolgsmeldung – empiric

+0

Interessant! Ich habe Ihren Code ausprobiert und das Formular wird nach der Bestätigung von SweetAlert nicht übermittelt. – theflarenet

+0

@theflarenet - Wie in der anderen Antwort erwähnt, ist der Name des Sendens das Problem. Ich habe die Antwort aktualisiert. –