Eine Möglichkeit, die Formularübermittlung zu stoppen, besteht darin, false von Ihrer JavaScript-Funktion zurückzugeben.
Wenn Sie auf die Schaltfläche "Senden" klicken, wird eine Validierungsfunktion aufgerufen. Ich habe einen Fall in der Formularvalidierung. Wenn diese Bedingung erfüllt ist, rufe ich eine Funktion namens returnToPreviousPage () auf.
function returnToPreviousPage() {
window.history.back();
}
Ich verwende JavaScript und Dojo Toolkit .
Anstatt zur vorherigen Seite zurückzukehren, wird das Formular gesendet. Wie kann ich diese Übermittlung abbrechen und zur vorherigen Seite zurückkehren?
javascript
html
forms
Muhammad Imran Tariq
quelle
quelle
Antworten:
Sie können den Rückgabewert der Funktion verwenden, um das Senden des Formulars zu verhindern
und funktionieren wie
Wenn in Chrome 27.0.1453.116 m der obige Code nicht funktioniert, setzen Sie das returnValue- Feld des Ereignishandlerparameters auf false, damit es funktioniert.
Vielen Dank an Sam für den Informationsaustausch.
EDIT:
Vielen Dank an Vikram für seine Problemumgehung, wenn validateMyForm () false zurückgibt:
Dabei ist validateMyForm () eine Funktion, die false zurückgibt, wenn die Validierung fehlschlägt. Der entscheidende Punkt ist die Verwendung des Namensereignisses. Wir können nicht für egepreventDefault () verwenden
quelle
false
scheint keine Wirkung zu haben. Chrome sendet das Formular weiterhin. Zum Beispielonsubmit="return false;"
. Das Setzen des Parameterfelds des EreignishandlersreturnValue
auffalse
funktioniert jedoch für mich.validateMyForm()
hat, werden Fehlerreturn false
nicht erreicht. Das kann also fehlschlagen. Nach vielen Stunden habe ich eine Lösung gefunden, die funktioniert, und sie unten veröffentlicht.Verwenden Sie Standardeinstellung verhindern
Dojo Toolkit
jQuery
Vanille JavaScript
quelle
target
.Folgendes funktioniert ab sofort (getestet in Chrome und Firefox):
Wobei validateMyForm () eine Funktion ist, die zurückgegeben wird,
false
wenn die Validierung fehlschlägt. Der entscheidende Punkt ist die Verwendung des Namensevent
. Wir können zB nicht verwendene.preventDefault()
.quelle
Verwenden Sie einfach eine einfache
button
Schaltfläche anstelle einer Senden-Schaltfläche. Rufen Sie eine JavaScript-Funktion auf, um das Senden von Formularen zu handhaben:Funktion innerhalb eines
script
Tags:Sie können es auch versuchen
window.history.forward(-1);
quelle
required
funktionieren neue HTML5-Attribute wie nicht.Viele schwierige Möglichkeiten, eine einfache Sache zu tun:
quelle
Alle Ihre Antworten gaben etwas zu arbeiten.
ENDLICH hat dies bei mir funktioniert: (Wenn Sie nicht mindestens ein Kontrollkästchen auswählen, wird es gewarnt und bleibt auf derselben Seite.)
quelle
Basierend auf der Antwort von @Vikram Pudi können wir dies auch mit reinem Javascript tun
quelle
Ich würde empfehlen, kein
onsubmit
Ereignis im Skript zu verwenden und stattdessen anzuhängen.Dann verwenden
preventDefault()
(oderreturnValue = false
für ältere Browser).quelle
onsubmit
?JS
vonHTML
Attributen angehängt werden . Auf diese Weise müssen Sie nicht so viel hin und her springen, während Sie den Code eines anderen lesenNehmen wir an, Sie haben ein ähnliches Formular
Hier ist das Javascript für die Funktion verifyAction
Dieser funktioniert unter Firefox, Chrome, Internet Explorer (Edge), Safari usw.
Wenn dies nicht der Fall ist, lassen Sie es mich wissen
quelle
preventDefault()
undreturnToPreviousPage()
ist perfekt und elegant. Es unterbricht den normalen Betrieb, genau wie Sie einen Ausnahmefänger für die Arbeit entwerfen würden. +1.Die Antworten von Hemant und Vikram haben in Chrome für mich nicht ganz funktioniert. Das event.preventDefault (); Das Skript verhinderte, dass die Seite gesendet wurde, unabhängig davon, ob die Validierung bestanden oder nicht bestanden wurde. Stattdessen musste ich das event.preventDefault () verschieben; in die if-Anweisung wie folgt:
Vielen Dank an Hemant und Vikram, die mich auf den richtigen Weg gebracht haben.
quelle
Wenn Sie beispielsweise eine Senden-Schaltfläche im Formular haben, schreiben Sie einfach event.preventDefault (), um die Übertragung zu stoppen. in der Funktion, die beim Klicken auf die Schaltfläche "Senden" oder die Eingabetaste aufgerufen wird.
quelle
Mach es einfach ....
und hier geht deine JQuery
quelle