Page 1 sur 1

probleme de checkbox

Posté : 08 févr. 2006, 09:03
par mambo
Bonjour à tous comment utilisé les check box pour activer un formulaire
ce que je veux faire c'est quand on clike sur le checkbox
le formulaire est actif
si on decoche le chekbox
le formulaire n'est pas actif

merci

Posté : 08 févr. 2006, 10:41
par starkeus
Salut!
Comme tu imagines tu fais ça via javascript.
Tu te fais une fonction JS que tu vas appeler lors de l'évènement onClick sur la checkbox.
Cette fonction JS va parcourir ton formulaire et mettre la propriété disabled de tous les élements du formulaire à true.
En gros ca peut donner ça:
<input type="checkbox" name="check" value="" onClick="DesactiveFormulaire('idForm');" />
<form action="" method="post" id="idForm" >
<input type="text" id="input1" name="input1" />
<input type="text" id="input2" name="input2" />
</form>
Le JS :
function DesactiveFormulaire(idFormulaire) {

var form=document.getElementById(idFormulaire);
for ( var i = 0; i < form.elements.length ; i++)
form.elements[i].disabled='true';
}
Bon tu dois améliorer pour prendre en compte le booleen du disabled via un parametre ou une variable globale au script etc...

Posté : 08 févr. 2006, 12:42
par mario
Bonjour,

comment faire si la checkbox a été décochée puis recochée ?
je n'ai pas trouvé l'évenement JavaScript OnUnclick :oops:

dois je utiliser onChange et faire une condition ?

Posté : 08 févr. 2006, 12:44
par HD
je ne maitrise pas js mais je suppose que :
onclick une fois signifie cochée
et onclick une 2eme fois signifie décochée
donc si tu créé une variable, selon qu'elle soit pair ou impair tu saura si la case est cochée ou pas :!:

Posté : 08 févr. 2006, 14:08
par starkeus
Bon allez je complète ;)
<input type="checkbox" id="check" name="check" value="" onClick="DesactiveFormulaire(this, 'idForm');" />
<form action="" method="post" id="idForm" >
<input type="text" id="input1" name="input1" />
<input type="text" id="input2" name="input2" />
</form>
Le JS :
function DesactiveFormulaire(checkboxObject, idFormulaire) {

var form=document.getElementById(idFormulaire);
for ( var i = 0; i < form.elements.length ; i++)
     if (checkboxObject.checked)
          form.elements[i].disabled='';
     else
          form.elements[i].disabled='true';
}
Par contre si ta case à cocher est par défaut décoché, penses à mettre disabled='true' sur tous les élements du formulaire au chargement de ta page.
:)

Edit: version "un peu optimisé":
function DesactiveFormulaire(checkboxObject, idFormulaire) {
     if (checkboxObject.checked)
          var mode='true';
     else
          var mode='';
     var form=document.getElementById(idFormulaire);
     for ( var i = 0; i < form.elements.length ; i++)
               form.elements[i].disabled=mode;
}

Posté : 08 févr. 2006, 14:28
par mario
function DesactiveFormulaire(checkboxObject, idFormulaire) {
     if (checkboxObject.checked)
          var mode='true';
     else
          var mode='';
     var form=document.getElementById(idFormulaire);
     for ( var i = 0; i < form.elements.length ; i++)
               form.elements[i].disabled=mode;
}
encore plus compact :wink:

function DesactiveFormulaire(checkboxObject, idFormulaire) {
   var mode = (checkboxOject.checked) ? "true" : "";     
   var form=document.getElementById(idFormulaire);
   for ( var i = 0; i < form.elements.length ; i++)
               form.elements[i].disabled=mode;
}