77 Stimmen

jQuery: Submit-Button deaktivieren, wenn keine Checkbox ausgewählt ist

Tutorial von Stefan Trost | Letztes Update am 22.02.2023 | Erstellt am 27.11.2013

Manchmal möchte man das Abschicken eines Formulars erst dann erlauben, wenn der Nutzer eine oder mindestens eine Checkbox ausgewählt hat. In diesem kleinen Tutorial möchte ich euch zeigen, wie ihr das mit JavaScript und jQuery hinbekommen könnt.

Das folgende Skript sorgt dafür, dass der Submit-Button immer nur dann aktiv ist, wenn mindestens eine Checkbox der zugehörigen Form selektiert ist.

HTML

Unser HTML ist ein simples Formular mit drei Checkboxen und einem Submit-Button:

<form action="">
   <input class="cbox" type="checkbox" name="cb1" value="1"> 1
   <input class="cbox" type="checkbox" name="cb2" value="2"> 2
   <input class="cbox" type="checkbox" name="cb3" value="3"> 3
   <input id="bt_submit" type="submit" value="Senden">
</form>

JavaScript/jQuery

Den folgenden jQuery-Code lassen wir direkt nach dem Laden der HTML-Seite ausführen, indem wir $(document).ready() verwenden:

<script type="text/javascript">

  $(document).ready(function() { 

     $('#bt_submit').attr("disabled", true);

     $('.cbox').change(function() {
        $('#bt_submit').attr('disabled', $('.cbox:checked').length == 0);
     });

  });

</script>

Zunächst setzen wir unseren Submit-Button auf disabled (dazu mehr im nächsten Abschnitt). Anschließend belegen wir die Checkboxen mit einer Funktion, die bei jeder Änderung des Zustandes der Checkboxen den Submit-Button anpasst und abhängig von der Selektierung aktiviert oder deaktiviert. Dazu prüfen wir die Anzahl der selektierten Checkboxen auf 0 und setzen das disabled-Attribute als diese Bedingung stimmt.

Wichtig: Nutzer mit deaktiviertem JavaScript beachten

Diese Funktion funktioniert natürlich nur dann, wenn der Nutzer in seinem Browser JavaScript aktiviert hat und ersetzt keinen serverseitigen Check, der immer noch zusätzlich durchgeführt werden sollte.

Aus diesem Grund setzen wir das "disabled"-Attribut des Submit-Buttons auch erst über unseren JavaScript-Code und nicht bereits im HTML, was man theoretisch ja auch machen könnte. So ist der Submit-Button beim Laden der Seite zunächst nicht deaktiviert, auch wenn zu diesem Zeitpunkt keine Checkbox ausgewählt ist. Für Nutzer mit aktivem JavaScript wird der Button sofort nach dem Laden deaktiviert, diese Nutzer bekommen gar nicht mit, dass der Button einmal aktiv war. Für Nutzer mit deaktiviertem JavaScript kann der JavaScript-Code dagegen nicht ausgeführt werden. Für diese Nutzer bleibt der Button aktiv und das Formular nutzbar. Hätten wir den Button sofort über HTML auf disabled gesetzt, wäre das Formular für diese Nutzer nicht verwendbar.

AntwortenPositivNegativDatumStimmen
66 Stimmen

Und falls man nur eine einzelne Checkbox hat, geht es noch viel einfacher:

$("#cbox").click(function() {
   $("#bt_submit").attr("disabled", !this.checked);
});

In this.checked steht, ob die geklickte Checkbox gerade ausgewähltes oder nicht.

Mit !this.checked setzen wir unseren Submit-Button immer auf genau das Gegenteil.
28.11.2013 um 02:47

AntwortenPositiv Negativ
33 Stimmen

Bin kein JavaScript Experte, möchte aber fragen, wie das ganze aussieht, wenn zwei Checkboxen angeklickt werden müssen, bevor der Sendbutton aktiviert wird?
01.10.2020 um 18:12

AntwortenPositiv Negativ
44 Stimmen

Meinst du so etwas hier:

$('.cbox').change(function() {
  $('#bt_submit').attr('disabled', 
    $('#cbox1:checked') && $('#cbox2:checked'));
});

Wobei deine Checkboxen beide die Klasse "cbox" haben müssen und eine Checkbox die ID "cbox1" und die andere die ID "cbox2" hat.
01.10.2020 um 19:21

Positiv Negativ
33 Stimmen

Hier:

$('#bt_submit').attr("disabled",true);

$('.chkfield').change(function() {
   $('#bt_submit').attr('disabled', 
     $('#cbox1:checked').length ==
     0 || $('#cbox2:checked').length == 0);
});

Das ist die vollständige korrekte Lösung.
02.10.2020 um 08:15

Positiv Negativ
33 Stimmen

Ja, das war es wohl.

Recht herzlichen Dank für die super schnelle Hilfe!
01.10.2020 um 21:26

Positiv Negativ
Antworten
Antworten

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.