57 / 100 SEO Punktzahl

Elementor Formular: Sende-Button erst anzeigen, wenn Pflichtfelder ausgefüllt sind

Mit diesem Snippet kannst du Elementor-Formulare so erweitern, dass der Sende-Button erst dann sichtbar und klickbar wird, wenn alle Pflichtfelder vollständig ausgefüllt wurden.

Das verbessert die Nutzerführung deutlich: Der Fokus liegt zuerst auf den Eingaben und nicht auf dem Absenden. Gleichzeitig verhinderst du unvollständige Formularübermittlungen bereits im Frontend.

Gerade bei Kontaktformularen, Angebotsanfragen oder Buchungen ist das eine sinnvolle Ergänzung.

Beispiel

Was das Snippet konkret macht

  • Der Submit-Button wird initial deaktiviert und ausgeblendet
  • Alle Pflichtfelder (required) werden überwacht
  • Sobald alle Felder ausgefüllt sind, wird der Button aktiviert
  • Pflicht-Checkboxen (z. B. DSGVO) werden ebenfalls berücksichtigt
  • Nach erfolgreichem Versand wird der Button erneut deaktiviert

Wichtig: Steuerung über die Klasse submit-lock

Das Script arbeitet bewusst nicht global, sondern nur innerhalb eines definierten Bereichs. Die Klasse:
submit-lock

bestimmt, welches Formular betroffen ist.

Das bedeutet:

  • Nur Formulare innerhalb eines Containers mit dieser Klasse werden überwacht
  • Du kannst mehrere Formulare unterschiedlich behandeln
  • Keine ungewollten Seiteneffekte auf andere Formulare

Verwendung in Elementor

Du hast zwei Möglichkeiten:

Variante 1 (empfohlen)

Container um das Formular → unter Erweitert → CSS-Klassen:  submit-lock

Variante 2

Direkt im Formular-Widget die Klasse setzen

Das Snippet

<script>
window.addEventListener('DOMContentLoaded', function() {

    var requiredInputs = document.querySelectorAll('.submit-lock form [required]'),
        checkBoxInputs = document.querySelectorAll('.submit-lock form input[type="checkbox"][required]'),
        formSubmits = document.querySelectorAll('.submit-lock form button[type="submit"]');

    const disableSubmitButtons = function() {
        for (const submit of formSubmits) {
            submit.setAttribute('disabled', '');
            submit.style.opacity = '0';
            submit.style.backgroundColor = '#615f5f';
        }
    };

    const enableSubmitButtons = function() {
        for (const submit of formSubmits) {
            submit.removeAttribute('disabled');
            submit.removeAttribute('style');
        }
    };

    const hasEmptyRequiredInputs = function() {
        for (const input of requiredInputs) {
            if (input.value === '') return true;
        }
        return false;
    };

    const hasUncheckedRequiredCheckboxes = function() {
        for (const input of checkBoxInputs) {
            if (!input.checked) return true;
        }
        return false;
    };

    const checkFormStatus = function() {
        (!hasEmptyRequiredInputs() && !hasUncheckedRequiredCheckboxes())
            ? enableSubmitButtons()
            : disableSubmitButtons();
    };

    disableSubmitButtons();

    requiredInputs.forEach(function(elem) {
        elem.addEventListener('input', checkFormStatus);
        elem.addEventListener('change', checkFormStatus);
    });

    checkBoxInputs.forEach(function(elem) {
        elem.addEventListener('change', checkFormStatus);
    });

});

jQuery(document).ready(function($){
    $(document).on('submit_success', function(){
        $('.submit-lock .e-form__buttons button')
            .css("opacity", "0.5")
            .css("background-color", "rgb(97, 95, 95)")
            .attr("disabled", "disabled");
    });
});
</script>

Technische Erklärung

Das Script arbeitet vollständig im Frontend mit JavaScript.

  • Es selektiert alle required Felder innerhalb von .submit-lock
  • Prüft kontinuierlich den Zustand der Inputs
  • Aktiviert den Button nur, wenn alle Bedingungen erfüllt sind
  • Nutzt zusätzlich das Elementor-Event submit_success, um nach dem Absenden den Button zu sperren


Wichtig:

Das ist keine serverseitige Validierung, sondern eine UX-Optimierung im Browser.

Typische Einsatzbereiche

  • Kontaktformulare
  • Angebots- oder Projektanfragen
  • Terminbuchungen
  • Formulare mit Pflicht-Checkbox (DSGVO)
  • Lead-Formulare mit mehreren Feldern

Einbau des Codes

Du kannst das Snippet auf drei Arten einbauen:

  • global über WPCodeBox / Code Snippets Plugin
  • im Footer (Custom Code)
  • lokal über ein HTML-Widget (nur für eine Seite)


Wenn du es global einsetzt, steuerst du die Aktivierung ausschließlich über die Klasse submit-lock.

Wichtiger Hinweis

Das Snippet ersetzt keine echte Validierung im Formular.

Elementor sollte weiterhin korrekt konfigurierte Pflichtfelder haben. Dieses Script sorgt lediglich dafür, dass der Benutzer den Button erst dann nutzen kann, wenn alle Felder ausgefüllt sind.

Fazit

Mit wenig Code erreichst du eine deutlich bessere Benutzerführung im Formular. Der Sende-Button wird erst dann aktiv, wenn alle Pflichtfelder erfüllt sind – genau so, wie es logisch erwartet wird.

Das Ganze funktioniert ohne zusätzliches Plugin, ist flexibel einsetzbar und lässt sich über die Klasse submit-lock gezielt steuern.

Bei Fragen hinterlasse ein Kommentar

Name
Nachricht *
Willst du auch eine Bewertung abgeben?
Nützlichkeit

Wie nützlich ist der Artikel für dich

Verständlichkeit
Umsetzung
Praxiswert

Kommentare

noch keine Kommentare vorhanden
Infos
Erstellt am:
18. April 2026
Aktualoisiert am:
26. April 2026
Plugin:
Elementor
Programmiersprache:
Javascript
Tags:
Design, Effekt
Author
Der Tobi
Gefällt:

0 Likes

Verwandte Beiträge
JetEngine Callback: Importierte Titel automatisch bereinigen
Wenn Immobilien automatisiert importiert werden, entstehen oft sehr lange oder unsaubere Titel. Besonders bei API-, CSV- oder XML-Importen werden häufig Zusatzinformationen wie Anbietername, Stadtteil, Trennzeichen oder Sonderzeichen direkt im Titel...
Elementor Formular: Sende-Button erst anzeigen, wenn Pflichtfelder ausgefüllt sind
Mit diesem Snippet kannst du in Elementor-Formularen den Sende-Button so steuern, dass er erst aktiv und sichtbar wird, wenn alle Pflichtfelder korrekt ausgefüllt wurden. Das sorgt nicht nur für eine...
Elementor Popup: Fokus-Rahmen bei Icons entfernen (Social Media, Links, Buttons)
Beim Einsatz von Popups in Elementor tritt häufig ein unschöner Effekt auf: Sobald ein Link oder ein Icon (z. B. Social Media Icons) den Fokus erhält, wird dieser visuell hervorgehoben...
JetEngine Listing Grid vertikal sortieren (Alphabetische Reihenfolge in Spalten)
Wenn Beiträge oder Einträge in einem JetEngine Listing Grid alphabetisch sortiert werden, erfolgt die Darstellung standardmäßig von links nach rechts. Besonders bei längeren Listen wirkt das oft unübersichtlich, weil die...
ImageMagick – Der geheime Helfer für schnelle Bildbearbeitung im Terminal
Wenn man regelmäßig Webseiten entwickelt oder betreibt, sammelt sich schnell eine große Menge an Bildern an. Produktbilder, Slider-Fotos, Portfolio-Assets oder Bloggrafiken müssen häufig zugeschnitten, verkleinert oder optimiert werden. Viele erledigen...
WooCommerce Mindermengen-Zuschlag automatisch berechnen (Mindestbestellwert mit Zuschlag lösen)
n vielen WooCommerce-Shops lohnt sich der Versand kleiner Bestellungen wirtschaftlich kaum. Statt einen harten Mindestbestellwert zu erzwingen, kann es sinnvoll sein, bei kleinen Warenkörben automatisch einen Mindermengen-Zuschlag zu berechnen.