Checkbox [Résolu]

Signaler
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
bonjour

Je dispose d"un tableu avec 26 checkbox.
Je  voudrai que quand l'on coche 3 checkbox toutes se mettent à disable=true
Et je n'arrive pas à le faire .

Merci d'avance        

@+

16 réponses

Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
14
Bonjour,

On peut faire comme ça :

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Titre</title>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" />
<script type="text/javascript">
var nbMax = 3;
var nbChecked = 0;

function ctrlnb(obj)
{
if (obj.checked)
{
nbChecked ++;
}
else
{
nbChecked --;
}

if (nbChecked > nbMax)
{
obj.checked = '';
nbChecked --;
alert('nb maxi atteint' + '\n' + 'Vous devez décocher une option avant d\'en sélectionner une autre.');
}
}
</script>
</head>

<form name="toto" action="">




















</form>

</html>
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
bonjour,

    que n'arrives-tu pas à faire ?
    la boucle ? les tests de ceux cochés ? mettre disabled=true ? ou quoi ?

    au fait, quand on coche 3 checkbox, ça veut dire
       dès que 3 ( n'importe les quels  ? )  sont cochés
    ou dès que l'un de 3 checkbox précis est cochés ?

    montre nous ton ch"tit bout de code, on devrait y arriver.

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011

je n'arive pas a faire la boucle qui va détecter les 3 checkbox chochées (n'importe les quels)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
à chaque onchange ou onclick des checkbox, appelle une fonction
: for ( var n= 0;n<document. name du formulaire .name des checkbox.length;n++ )
  { compter les checkbox cochés
     dès que =3  ==> décocher les suivants   }

et si tu as encore des problèmes...
met nous ton code  ! sinon, je ne pourrais plus t'aider.
<hr />



Cordialement Bul [mon Site] [M'écrire]
<hr />


En général, c'est absurde de généraliser.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
122
Salut,

Le plus simple étant de donner le même nom à tout tes checkbox, puis de parcourir le tableau renvoyé par getElementsByName :
var check = document.form.getElementsByName('nomDeTesCheckBox');
var compteur = 0;
for (var i = 0; i < check.length; i++) {
    if (check.checked) {
       compteur++;
    }
}

alert(compteur);
______________________________________
DarK Sidious
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
mais enfin...
par exemple : actuellement cochés 5,10,20    on coche 22 ou 3 ou 15 ==> faut garder les quels ?
à mon humble avis, ta requète est ... curieuse.
<hr />



Cordialement        Bul     [mon Site]     [M'écrire]
<hr />

En général, c'est absurde de généraliser.
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011

En fait c'est pour une formulaire :

La question est :

"Cochez dans le tableau suivant, 3 sentiments ou émotions que vous éprouvez"

et en dessous ya le tableau

Donc je cherche quelque chose pour que l'utilisateur ne puiise pas choché plus de 3 checkbox

Et j'avais pensé que dés qu'il a choché les 3 checkbox de mettre toute les autres a disable=true
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
>>mettre toute les autres a disable=true

    pas la peine... il ne sont pas encore cochés.
    mais ma question :
        actuellement cochés 5,10,20   
        on coche 22 ( ou 3, ou 15 ) ==> faut garder lesquels ?<hr />
Cordialement       Bul [mon Site]     [M'écrire]<hr />En général, c'est absurde de généraliser.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
je pense que la seule  façon de faire, c'est à la validation du
    formulaire, compter le nombre de checkbox cochés.si non 3> erreur
<hr />



Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
122
Salut,

Je rejoins l'avis de bultez : c'est à la validation du formulaire qu'il faut vérifier si au plus 3 cases sont cochés : c'est pas cohérent de désactiver les autres check box si 3 sont cochés je trouve !
______________________________________
DarK Sidious
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
on est bien d'accord    Darksidious.
il est impossible, à mon avis, de créer une règle quelconque pour n'en
    garder que 3, de déterminer les checkbox qu'il faut conserver ou pas.
<hr />



Cordialement            Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011

au lieu de passé par des checkbox je ne pourait pas passé par des combobox ?
se ne searit pas plus facile pour la vérification au niveau de mon code php ?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
par combobox tu entends select je suppute ?
le problème reste entier : comment déterminer ceux ou celles qu'il faut garder ?

ah... tu va refaire les vérifs en php ? ça ne changerait "pratiquement rien".

si tu prends la précaution de nommer tes éléments "nom[]" avec crochets,
    php recevra un array des value ( select ou checkbox ou ... )

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
on ne dit pas je suppute, mais, je suis péripatéticienne.
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011

Comment je pourrai faire alors ? Tu n'a pas une autre solution pour moi ?
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011

merci cela me convient parfaitement

@+
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
    désolé.... j'ai totalement foiré mes réponses,
j'ai mal lu et ce que voulais faire dodo était plutôt pas mal
et  parfaitement réalisable !!!

    <script type="text/javascript">
        function ctrlnb()
        {   var nb=0;
            coche=document.toto.chk;
            for ( var n=0;n<coche.length;n++ )
            {    if ( coche[n].checked )
                 {  nb++;
                    if ( nb>=3 )
                    {   for ( n=0;n<coche.length;n++ )
                        {   if ( !coche[n].checked )
                            {    coche[n].disabled=true;   }
                        }
                        return;
                    }
                }
            }
            for ( n=0;n<coche.length;n++ )
            {    coche[n].disabled=false;    }
        }
    </script>
  <form name="toto" action="">
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    </form>
 

    je ne vois qu'une explication pour moi :
       je n'avais probablement pas encore ma dose d'alcool nécessaire....  

   

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.