web-dev-qa-db-fra.com

jQuery voir si une ou plusieurs cases sont cochées

Je sais comment voir si une case à cocher individuelle est sélectionnée ou non.

Mais j’ai des problèmes avec ce qui suit - étant donné un identifiant de formulaire, j’ai besoin de voir si aucune des cases à cocher sont sélectionnées (c.-à-d. 1 ou plus), et j’ai besoin de voir si aucune = sont sélectionnés. Fondamentalement, j'ai besoin de deux fonctions distinctes qui répondent à ces deux questions. L'aide serait appréciée. Merci!

En fait, il me faudrait simplement une fonction pour me dire si aucun sont sélectionnés. Sachant cela répondrait à l'autre question.

117
bba

Vous pouvez utiliser quelque chose comme ça

if ($("#formID input:checkbox:checked").length > 0)
{
    // any one is checked
}
else
{
   // none is checked
}
227
rahul

JQuery .is testera tous les éléments spécifiés et retournera la valeur true si au moins un d’eux correspond au sélecteur:

if ($(":checkbox[name='choices']", form).is(":checked"))
{
    // one or more checked
}
else
{
    // nothing checked
}
26
Michael Logutov

Tu peux le faire:

  if ($('#form_id :checkbox:checked').length > 0){
    // one or more checkboxes are checked
  }
  else{
   // no checkboxes are checked
  }

Où:

  • :checkbox le sélecteur de filtre sélectionne toutes les cases à cocher.
  • :checked sélectionnera les cases à cocher
  • length donnera le nombre de ceux cochés
8
Sarfraz

C’est ce que j’avais utilisé pour vérifier si des cases à cocher dans une liste de cases à cocher avaient été modifiées:

$('input[type="checkbox"]').change(function(){ 

        var itemName = $('select option:selected').text();  

         //Do something.

});     
4
James Drinkard

Sans utiliser 'length', vous pouvez le faire comme ceci:

if ($('input[type=checkbox]').is(":checked")) {
      //any one is checked
}
else {
//none is checked
}
4
Acheme Paul

La réponse de Rahul convient le mieux à votre question. Quoi qu'il en soit, si vous avez un groupe de cases à cocher à cocher et que toutes les cases à cocher ne sont pas dans votre formulaire, vous pouvez y aller.

Mettez un nom de classe pour toutes les cases à cocher, par exemple un nom de classe test_check et maintenant vous pouvez vérifier si l’une des cases à cocher appartenant au groupe est cochée par:

$("#formID .test_check:checked").length > 0

S'il retourne true, supposons qu’une ou plusieurs cases à cocher portant le nom de classe test_check et aucun vérifié si renvoie false.

J'espère que ça aide quelqu'un. Merci :)-

3
Rajesh Omanakuttan

Vous pouvez faire un simple retour de .length ici:

function areAnyChecked(formID) {
  return !!$('#'+formID+' input[type=checkbox]:checked').length;
}

Cette recherche pour les cases à cocher dans la forme donnée, voit si certaines sont :checked et retourne true s’ils le sont (puisque la longueur serait 0 sinon). Pour clarifier un peu, voici la version convertie non booléenne:

function howManyAreChecked(formID) {
  return $('#'+formID+' input[type=checkbox]:checked').length;
}

Cela renverrait le nombre de vérifications effectuées.

3
Nick Craver