Es gibt einige Dinge, die Sie beachten müssen.
1. Es gibt verschiedene Möglichkeiten, ein Formular einzureichen
- Verwenden Sie die Senden-Schaltfläche
- durch Drücken der Eingabetaste
- durch Auslösen eines Submit-Ereignisses in JavaScript
- möglicherweise mehr je nach Gerät oder zukünftigem Gerät.
Wir sollten uns daher an das Formularübermittlungsereignis binden , nicht an das Schaltflächenklickereignis. Dadurch wird sichergestellt, dass unser Code jetzt und in Zukunft auf allen Geräten und unterstützenden Technologien funktioniert.
2. Hijax
Der Benutzer hat möglicherweise kein JavaScript aktiviert. Hier ist ein Hijax- Muster gut, bei dem wir die Kontrolle über das Formular mithilfe von JavaScript übernehmen, es jedoch übermitteln können, wenn JavaScript fehlschlägt.
Wir sollten die URL und die Methode aus dem Formular ziehen. Wenn sich der HTML-Code ändert, müssen wir das JavaScript nicht aktualisieren.
3. Unauffälliges JavaScript
Die Verwendung von event.preventDefault () anstelle von false ist eine gute Vorgehensweise, da das Ereignis dadurch in die Luft sprudeln kann. Auf diese Weise können andere Skripts in das Ereignis eingebunden werden, z. B. Analyseskripts, die möglicherweise Benutzerinteraktionen überwachen.
Geschwindigkeit
Wir sollten idealerweise ein externes Skript verwenden, anstatt unser Skript inline einzufügen. Wir können im Kopfbereich der Seite mithilfe eines Skript-Tags darauf verlinken oder aus Gründen der Geschwindigkeit unten auf der Seite darauf verlinken. Das Skript sollte die Benutzererfahrung leise verbessern und nicht stören.
Code
Angenommen, Sie stimmen allen oben genannten Punkten zu und möchten das Submit-Ereignis abfangen und über AJAX (ein Hijax-Muster) verarbeiten. Dann könnten Sie Folgendes tun:
$(function() {
$('form.my_form').submit(function(event) {
event.preventDefault(); // Prevent the form from submitting via the browser
var form = $(this);
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize()
}).done(function(data) {
// Optionally alert the user of success here...
}).fail(function(data) {
// Optionally alert the user of an error here...
});
});
});
Sie können eine Formularübermittlung jederzeit manuell über JavaScript auslösen, indem Sie Folgendes verwenden:
$(function() {
$('form.my_form').trigger('submit');
});
Bearbeiten:
Ich musste dies kürzlich tun und schrieb schließlich ein Plugin.
(function($) {
$.fn.autosubmit = function() {
this.submit(function(event) {
event.preventDefault();
var form = $(this);
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize()
}).done(function(data) {
// Optionally alert the user of success here...
}).fail(function(data) {
// Optionally alert the user of an error here...
});
});
return this;
}
})(jQuery)
Fügen Sie Ihrem Formular-Tag ein Attribut für die automatische Übermittlung von Daten hinzu, und Sie können Folgendes tun:
HTML
<form action="/blah" method="post" data-autosubmit>
<!-- Form goes here -->
</form>
JS
$(function() {
$('form[data-autosubmit]').autosubmit();
});