75 votes

Jquery - vérifier si au moins une case à cocher est cochée

J'ai le formulaire HTML suivant, qui peut comporter plusieurs cases à cocher. Lorsque l'on clique sur le bouton "Envoyer", je veux que l'utilisateur reçoive une alerte javascript l'invitant à cocher au moins une case si aucune n'est cochée. Existe-t-il un moyen simple de faire cela en utilisant Jquery ?

<form name = "frmTest" id="frmTest">
  <input type="checkbox" value="true" checked="true" name="chk[120]">
  <input type="checkbox" value="true" checked="true" name="chk[128]">
  <input type="checkbox" name="chk[130]">
  <input type="checkbox" name="chk[143]">
  <input type="submit" name="btnsubmit" value="Submit">
</form>

5 votes

Vous seriez probablement mieux avec <input name="chk[]" value="120"> . Notez également que le uniquement La valeur acceptable pour l'attribut checked est "checked". checked="true" est une erreur.

108voto

Quentin Points 325526
if(jQuery('#frmTest input[type=checkbox]:checked').length) { … }

1 votes

:checked renvoie déjà un booléen, donc .length n'est pas nécessaire. true.length et false.length fournissent tous deux des valeurs indéfinies.

14 votes

@Jan - jQuery('#frmTest input[type=checkbox]:checked') renvoie un objet jQuery contenant tous les éléments qui correspondent au sélecteur. Elle ne renvoie pas un booléen. Vous pouvez le confondre avec HTMLInputElement.checked .

36voto

Matthew Flaschen Points 131723
$('#frmTest input:checked').length > 0

0 votes

$('#frmTest:checkbox').length > 0 serait mieux pour vérifier parmi un certain nombre de cases à cocher.

2 votes

Pourquoi les boutons radio seraient-ils meilleurs ? Si le PO veut au moins une option sélectionnée les boutons radio le limiteraient à une seule au maximum .

1 votes

@David, j'ai supprimé cette suggestion.

26voto

Jon Points 2871
$("#frmTest").submit(function(){
    var checked = $("#frmText input:checked").length > 0;
    if (!checked){
        alert("Please check at least one checkbox");
        return false;
    }
});

10voto

chithon Points 85
$("#show").click(function() {
    var count_checked = $("[name='chk[]']:checked").length; // count the checked rows
        if(count_checked == 0) 
        {
            alert("Please select any record to delete.");
            return false;
        }
        if(count_checked == 1) {
            alert("Record Selected:"+count_checked);

        } else {
            alert("Record Selected:"+count_checked);
          }
});

0 votes

Cela ne fonctionne pas pour moi, quelque chose a changé dans la façon dont jQuery gère l'événement checkbox checked ?

6voto

namklabs Points 75
$('#frmTest').submit(function(){
    if(!$('#frmTest input[type="checkbox"]').is(':checked')){
      alert("Please check at least one.");
      return false;
    }
});

is(':checked') retournera vrai si au moins une ou plusieurs des cases à cocher sont cochées.

0 votes

Est-il possible de vérifier en direct les clics des cases à cocher ?

0 votes

Oui, mais vous utiliserez un gestionnaire d'événement différent. Regardez ça : stackoverflow.com/questions/3442322/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X