HTML: JavaScript: Formularübermittlung blockieren und Javascript-Funktion aufrufen
Lesezeit: 4 Minuten
Ich möchte einen AJAX-Aufruf tätigen, wenn eine Senden-Schaltfläche im Formular gedrückt wird. Tatsächlich kann ich die nicht entfernen <form> weil ich auch eine clientseitige Validierung machen möchte. Ich habe diesen Code ausprobiert.
function makeSearch(){
alert("Code to make AJAX Call");
}
Nach Verwendung dieses Codes wird alert() nicht angezeigt, aber die Seite wird neu geladen. Ich möchte das Neuladen der Seite blockieren und die JS-Funktion aufrufen.
Vielen Dank
Ändern Sie die Eingabe in type=”button” :: Bitte überprüfen Sie, bevor Sie nach How To fragen
– Edward J. Beckett
23. Januar 2013 um 4:44 Uhr
@EddieB Einige Browser senden immer noch mit input type=button
– Explosionspillen
23. Januar 2013 um 4:48 Uhr
Wenn Sie reines Javascript verwenden, geben Sie am Ende der Funktion false zurück; wodurch das Absenden des Formulars verhindert wird
– Mehavel
23. Januar 2013 um 4:48 Uhr
@ExplosionPills True :: Das Ändern der Eingabe in eine Schaltfläche type=”button” würde funktionieren :: Hier ist eine Anleitung
– Edward J. Beckett
23. Januar 2013 um 4:51 Uhr
@EddieB Ich glaube nicht einmal, dass das stimmt; ziemlich sicher, dass IE7 immer noch Formulare mit Schaltflächentyp “Schaltfläche” übermittelt
– Explosionspillen
23. Januar 2013 um 4:54 Uhr
Miqdad Ali
Ergänzen Sie die onsubmit Attribut zu form Schild:
Wenn Sie “onclick” verwenden möchten, sollte der Eingabetyp “button” anstelle von “submit” sein.
– Miqdad Ali
16. September 2015 um 17:37 Uhr
Wenn ich eine Funktion hinzufüge, bevor ich false zurückgebe, wird das Formular trotzdem gesendet. Bsp.: function mySubmitFunction() { checkElements(); falsch zurückgeben; }
– JonnyDevv
13. April 2017 um 12:53 Uhr
Macht nichts, war ein Fehler im Code und zeigte den Fehler nicht auf der Konsole.
– JonnyDevv
13. April 2017 um 13:05 Uhr
Explosionspillen
Der richtige jQuery-Weg wäre:
$("form").on('submit', function (e) {
//ajax call here
//stop form submission
e.preventDefault();
});
Wie du schon sagtest, könntest du die auch entfernen <form> Element und binden Sie einfach den Ajax-Aufruf an die Schaltfläche click Veranstaltung.
Gute Antwort. IMO ist es viel besser, das gesamte JS vom HTML-Markup getrennt zu halten. Hier ist ein Stift mit einem funktionierenden Beispiel: codepen.io/martinkrulltott/pen/yNZJbp
– Martin
5. August 2015 um 2:00 Uhr
verwenden jQuery.postund ändern Sie die Senden-Schaltfläche.
Die Schaltfläche „Senden“ wird zum Senden von Daten an den Server erstellt POST (native Methode, nicht Ajax)empfehle ich, es nur in besonderen Fällen zu verwenden, beispielsweise beim Hochladen einer Datei.
Wenn Sie weiterhin die Submit-Schaltfläche für die Ajax-Anfrage verwenden, werden Sie viele Probleme mit dem IE haben.
Ändern Sie die Eingabe in type=”button” :: Bitte überprüfen Sie, bevor Sie nach How To fragen
– Edward J. Beckett
23. Januar 2013 um 4:44 Uhr
@EddieB Einige Browser senden immer noch mit
input type=button
– Explosionspillen
23. Januar 2013 um 4:48 Uhr
Wenn Sie reines Javascript verwenden, geben Sie am Ende der Funktion false zurück; wodurch das Absenden des Formulars verhindert wird
– Mehavel
23. Januar 2013 um 4:48 Uhr
@ExplosionPills True :: Das Ändern der Eingabe in eine Schaltfläche type=”button” würde funktionieren :: Hier ist eine Anleitung
– Edward J. Beckett
23. Januar 2013 um 4:51 Uhr
@EddieB Ich glaube nicht einmal, dass das stimmt; ziemlich sicher, dass IE7 immer noch Formulare mit Schaltflächentyp “Schaltfläche” übermittelt
– Explosionspillen
23. Januar 2013 um 4:54 Uhr