Was ist daran falsch?
HTML:
<form action="http://localhost:8888/bevbros/index.php/test" method="post" accept-charset="utf-8" id="cpa-form" class="forms">
<input type="text" name="zip" value="Zip code" id="Zip" class="required valid">
<input type="submit" name="Next" value="Submit" class="forms" id="1">
</form>
jQuery:
$("#cpa-form").submit(function(e){
e.preventDefault();
});
jquery
preventdefault
djreed
quelle
quelle
alert()
im Submit-Handler sind, wird es aufgerufen? Wenn nicht, liegt möglicherweise ein Fehler in Ihrem Skript vor, der verhindert, dass der Ereignishandler korrekt verkabelt wird. Irgendwas in der Fehlerkonsole?Antworten:
Versuche dies:
quelle
e.preventDefault()
funktioniert gut mit einer Formularübermittlung, das Problem lag an anderer Stelle im OP-Code. Die Verwendungreturn false
kann zu unbeabsichtigten Konsequenzen führen.Verwenden Sie die neue Ereignissyntax "Ein".
Zitieren: https://api.jquery.com/on/
quelle
$(document).ready()
) Wie mache ich das?true
oder gesetztfalse
? Können Sie Ihren Code in jsfiddle.net neu erstellen und den Link senden? Fügen Sie ein hinzualert()
, um zu bestätigen, dass die Funktion ausgelöst wird. Einige Leute haben berichtet, dass das Hinzufügene.stopPropagation();
nach deme.preventDefault();
Anhalten andere verkettete Ereignisse vom Feuern abhält.$('#myFormID').validationEngine('validate')
von jQuery validationEngine als Variablevalid
, um zu überprüfen, ob die Eingabe eine gültige E-Mail-Adresse ist. Trotzdem möchte ich, dass das Standardverhalten so oder so verhindert wird. musspreventDefault
sich innerhalb des if-Blocks befinden, nicht davor?preventDefault
befindet sich im nicht gültigen Block, um die Übermittlung des Formulars zu stoppen. Verwenden Sie mit anderen Worten, falls gültig , das Standardverhalten des Formulars.Ich glaube, dass die obigen Antworten alle richtig sind, aber das zeigt nicht, warum die
submit
Methode nicht funktioniert.Nun, die
submit
Methode funktioniert nicht, wenn jQuery dasform
Element nicht abrufen kann und jQuery keinen Fehler macht. Wenn Ihr Skript im Kopf des Dokuments platziert ist, stellen Sie sicher , dass der Code läuft nachDOM
ist bereit . Also,$(document).ready(function () { // your code here // });
wird das Problem lösen.Am besten platzieren Sie Ihr Skript immer am Ende des Dokuments.
quelle
Dies ist eine alte Frage, aber die hier akzeptierte Antwort geht dem Problem nicht wirklich auf den Grund.
Sie können diese beiden Möglichkeiten lösen. Zuerst mit jQuery:
Oder ohne jQuery:
Sie müssen nicht verwenden
return false
, um dieses Problem zu lösen.quelle
quelle
quelle
Ihr Code ist in Ordnung, Sie müssen ihn nur in die Bereitschaftsfunktion einfügen.
quelle
Sie können diesen Code auch ausprobieren, wenn Sie beispielsweise später dynamische Formulare hinzugefügt haben. Sie haben beispielsweise ein asynchrones Fenster mit Ajax geladen und möchten dieses Formular senden.
Fall 1, statische Version: Wenn Sie nur wenige Listener haben und Ihr zu handhabendes Formular fest codiert ist, können Sie direkt auf "Dokumentebene" abhören. Ich würde die Listener nicht auf Dokumentebene verwenden, aber ich würde versuchen, tiefer in den Doom Tree einzusteigen, da dies zu Leistungsproblemen führen könnte (abhängig von der Größe Ihrer Website und Ihrem Inhalt).
ODER
ODER
ODER
quelle
.live()
ist seit jQuery 1.7 veraltet und seit 1.9 entfernt. Verwenden Sie.on()
stattdessen.Hallo suchte nach einer Lösung, um ein Ajax-Formular mit Google Tag Manager (GTM) zum Laufen zu bringen. Die Rückgabe false verhinderte den Abschluss und die Übermittlung der Aktivierung des Ereignisses in Echtzeit auf Google Analytics-Lösung bestand darin, die Rückgabe false durch e.preventDefault () zu ändern. ;; das richtig funktioniert folgt dem Code:
quelle
e.preventDefault () funktioniert nur dann einwandfrei, wenn Sie keine Probleme mit Ihren Javascripts haben. Überprüfen Sie Ihre Javascripts, wenn e.preventDefault () nicht funktioniert. Möglicherweise funktionieren auch einige andere Teile Ihres JS nicht
quelle
Nun, ich bin auf ein ähnliches Problem gestoßen. Das Problem für mich ist, dass die JS-Datei geladen wird, bevor das DOM-Rendering stattfindet. Bewegen Sie sich also
<script>
zum Ende des<body>
Tags.oder verwenden Sie aufschieben.
Seien Sie also versichert,
e.preventDefault()
dass es funktionieren sollte.quelle