Wie verhindere ich, dass ein Formular mit jquery gesendet wird?
Ich habe alles versucht - siehe 3 verschiedene Optionen, die ich unten ausprobiert habe, aber alles wird nicht funktionieren:
$(document).ready(function() {
//option A
$("#form").submit(function(e){
e.preventDefault();
});
//option B
$("#form").submit(function(e){
stopEvent(e);
});
//option C
$("#form").submit(function(){
return false;
});
});
Was könnte falsch sein?
Update - hier ist mein HTML:
<form id="form" class="form" action="page2.php" method="post">
<!-- tags in the form -->
<p class="class2">
<input type="submit" value="Okay!" />
</p>
</form>
Stimmt hier etwas nicht?
return false;
nach dem.submit()
für mich gearbeitet! Ich hatte das gleiche Probleme.preventDefault();
Code nicht erreicht / ausgeführt.Antworten:
Zwei Dinge fallen auf:
form
. Beziehen Sie sich lieber auf das Tag, indem Sie das # fallen lassen.Dies
e.preventDefault
ist auch die richtige JQuery-Syntax, zOption C sollte auch funktionieren. Option B ist mir nicht bekannt
Ein vollständiges Beispiel:
quelle
$('#form')
nach$('.form')
.Sie haben wahrscheinlich nur wenige Formulare auf der Seite und verwenden $ ('form'). Submit () fügt dieses Ereignis zum ersten Auftreten des Formulars auf Ihrer Seite hinzu. Verwenden Sie stattdessen die Klassenauswahl oder versuchen Sie Folgendes:
oder bessere Version davon:
quelle
Um das Versenden von Formularen / Formularen zu verhindern, verwenden Sie
Um das Sprudeln von Ereignissen zu stoppen, verwenden Sie
Um das Senden von Formularen zu verhindern, sollte auch "return false" funktionieren.
quelle
event.stopPropagation()
und aufevent.preventDefault()
. Einfalse
Wert kann auch für den Handler als Abkürzung für übergeben werdenfunction(){ return false; }
."Ich hatte auch das gleiche Problem. Ich hatte auch versucht, was Sie versucht hatten. Dann ändere ich meine Methode, um nicht jquery zu verwenden, sondern indem ich das Attribut "onsubmit" im Formular-Tag verwende.
Es klappt.
Wenn ich jedoch versucht habe, den falschen Rückgabewert nur in "thefunction ()" zu setzen, wird der Übermittlungsprozess nicht verhindert, daher muss ich "return false" setzen. im Attribut onsubmit. Daher komme ich zu dem Schluss, dass meine Formularanwendung den Rückgabewert nicht von der Javascript-Funktion erhalten kann. Ich habe keine Ahnung davon.
quelle
false;
undreturn false;
. Sie müssten habenonsubmit="return thefunction();"
Ich hatte das gleiche Problem und habe es auf diese Weise gelöst (nicht elegant, aber es funktioniert):
Und es hat meiner Meinung nach den Vorteil, dass Sie die Situation jederzeit wieder rückgängig machen können:
quelle
$('#form').removeAttr('onsubmit');
Hängen Sie das Ereignis an das Submit-Element an, nicht an das Formularelement. Zum Beispiel in Ihrem HTML so
quelle
Sie können einfach überprüfen, ob das Formular gültig ist, wenn ja, senden Sie die Übermittlungslogik, andernfalls wird ein Fehler angezeigt.
HTML
Javascript
quelle
Wenn ich ein
<form>
Tag ohne das Attribut verwendeid="form"
und es direkt in jquery beim Tag-Namen aufrufe, funktioniert es mit mir.Ihr Code in HTML-Datei:
und im Jquery-Skript:
quelle
$('#form')
sucht ein Element mitid="form"
.$('form')
sucht nach dem Formularelementquelle
Sie vergessen die Formular-ID und es funktioniert
quelle
von hier: https://api.jquery.com/submit-selector/ (interessante Seite zu Übermittlungstypen)
quelle
Dies scheint auch zu funktionieren und kann etwas einfacher sein:
quelle
Mit jQuery können Sie Folgendes tun:
1- Verwenden Sie das native Formular zum Senden eines Ereignisses mit einer Schaltfläche zum Senden, und verhindern Sie dann, dass das Ereignis ausgelöst wird
2- Überprüfen Sie das Formular Gültige Eigenschaft Dies kann wie folgt implementiert werden:
1- HTML:
2- Javascript
quelle