22 Voix

jQuery: Désactiver Bouton de Soumission si aucune Checkbox n'est cochée

Tutoriel de Stefan Trost | Dernière mise à jour le 22/02/2023 | Créé le 31/01/2023

Parfois, nous aimerions permettre la soumission d'un formulaire uniquement si une ou au moins une case à cocher est cochée. Dans ce petit tutoriel, je voudrais vous montrer comment faire cela en utilisant JavaScript et jQuery.

Le script suivant s'assure que le bouton "Envoyer" est seulement actif ou enabled lorsqu'au moins une case à cocher (checkbox) du formulaire correspondant est sélectionnée.

HTML

Notre code HTML est un simple formulaire contenant trois cases à cocher et un bouton d'envoi:

<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="Envoyer">
</form>

JavaScript/jQuery

Nous laissons le code jQuery suivant s'exécuter immédiatement après le chargement de la page HTML en utilisant $(document).ready() :

<script type="text/javascript">

  $(document).ready(function() { 

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

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

  });

</script>

Tout d'abord, nous définissons notre bouton d'envoi (submit button) sur désactivé (disabled) (plus d'informations à ce sujet dans la section suivante). Après cela, nous appliquons une fonction aux cases à cocher (checkboxes) qui est appelée chaque fois qu'une case à cocher est changé. Cette fonction ajuste l'état du bouton de soumission en fonction de l'état de la sélection. Pour cela, nous vérifions que le nombre de cases à cocher sélectionnées est égal à 0 et définissons l'attribut "disabled" en fonction de cette condition.

Important: Considérez les Utilisateurs avec JavaScript désactivé

Cette fonction ne fonctionne que lorsque JavaScript est activé dans le navigateur de l'utilisateur. Il ne remplace pas une vérification de l'entrée de l'utilisateur côté serveur qui doit être effectuée en plus.

Pour cette raison, nous définissons également l'attribut "disabled" du bouton d'envoi dans notre code JavaScript et pas déjà dans le HTML, ce qui pourrait également être fait en théorie. Le bouton submit n'est initialement pas désactivé lors du chargement de la page, même si aucune case n'est cochée à ce moment. Pour les utilisateurs avec JavaScript actif, le bouton est désactivé immédiatement après le chargement, ces utilisateurs ne remarquent pas que le bouton était autrefois actif. Pour les utilisateurs avec JavaScript désactivé, le code JavaScript ne peut pas être exécuté. Le bouton reste actif pour ces utilisateurs et le formulaire utilisable. Si nous avions immédiatement mis le bouton sur désactivé via HTML, le formulaire ne serait pas utilisable pour ces utilisateurs.

RépondrePositifNégatifDateVoix
00 Voix

Et si vous n'avez qu'une seule checkbox, c'est encore plus simple à mettre en place:

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

Dans this.checked, il est stocké, que la case à cocher cliquée soit sélectionnée ou non.

En utilisant !this.checked, nous pouvons définir notre bouton de submit exactement à l'opposé.
05/02/2023 à 16:55

RépondrePositif Négatif
00 Voix

Je ne suis pas un expert en JavaScript, mais je voudrais demander à quoi tout cela ressemble lorsqu'il faut cliquer sur deux cases à cocher avant d'activer le bouton d'envoi?
19/02/2023 à 20:28

RépondrePositif Négatif
00 Voix

Voulez-vous dire quelque chose comme ça:

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

Vos cases à cocher doivent toutes deux avoir la classe "cbox" et une case à cocher l'ID "cbox1" et l'autre l'ID "cbox2".
19/02/2023 à 22:13

Positif Négatif
11 Vote

Ici:

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

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

C'est la solution correcte complète.
21/02/2023 à 22:12

Positif Négatif
00 Voix

Oui, c'était ça.

Merci beaucoup pour l'aide super rapide!
22/02/2023 à 17:31

Positif Négatif
Répondre
Répondre

Sur l’Auteur

AvatarVous pouvez trouver des logiciels de Stefan Trost sur fr.sttmedia.com. Avez-vous besoin d'un logiciel personnalisé selon vos propres besoins? Écrivez-nous: fr.sttmedia.com/contact
Voir Profil

 

Sujets Connexes

VirtualBox: Changer la Date et l'Heure

Tutoriel | 10 Commentaires

jQuery: Y a-t-il un Élément?

Conseil | 1 Commentaire

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.