bonjour,
j'ai un formulaire avec une case à cocher et 3 boutons radio
ce que je voudrais, c'est de bloqué l'accès aux boutons radio si la case à cochée est cochée => comment faire ?
bonjour,
j'ai un formulaire avec une case à cocher et 3 boutons radio
ce que je voudrais, c'est de bloqué l'accès aux boutons radio si la case à cochée est cochée => comment faire ?
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <input type="checkbox" onclick="document.getElementById('radiobutton').style.display=(this.checked)?'none':'block'" /> <div id="radiobutton"> <input type="radio" /> <input type="radio" /> <input type="radio" /> </div>
merci,
mais je ne veux pas qu'ils disparaissent, je veux qu'ils deviennent inselectionnable...
de plus, la case est cochée par defaut => a l'affichage pour la premiere fois de la page ça ne bloque pas mes radio boutons...
Code : Sélectionner tout - Visualiser dans une fenêtre à part <input type="checkbox" onclick="document.getElementById('radiobutton').disabled = this.checked;" />
Ben adapte le code, je t'ai montré la démarche.
Tu as juste une boucle à faire sur les boutons radio présents dans le div radiobutton et de tous les basculer à disabled ...
Et pour tester au chargement de ta page tu mets le test également dans le onload du body.
ok merci
par contre j'aimerais faire une fonction CacheElement pour que ça soit plus simple à utiliser
j'ai essayé ça mais ça n'a pas l'air de marcher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <label><input type="checkbox" name="toto" checked="checked" onclick="CacheElement('element1')" /> Mode Auto</label><br/>PS : desolé, je suis une quiche en javascript...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function CacheElement(Nom) { alert(Nom); document.getElementById(Nom).style.display=(this.checked)?'none':'block'; }
Je ne l'ai pas testé et je l'ai ecrit vite fait, mais je pense qu'il devrait fonctionner, si on admet que la variable "nom" contient l'id du div qui contient les boutons radio.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function CacheElement(nom){ var boutons = document.getElementById(nom).getElementsByTagName('input'); for(var i = 0; i <= boutons.length-1; i++){ boutons[i].disabled = true; } }
Après il te reste juste à faire le test si la case est cochée ou non.
et comment fait-on pour savoir si la case est coché ?
j'ai testé ça mais ça ne marche pas :
=> j'ai pas compris a quoi correspond this ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function DisableElement(Nom) { var boutons = document.getElementById(Nom).getElementsByTagName('input'); for(var i = 0; i <= boutons.length-1; i++) { boutons[i].disabled = (this.checked)?'none':'block'; } }
Les valeurs de disabled sont true et false, pas none et block ..
J'avais utilisé this dans le HTML, cela signifiait "cet élément", dans ton code Javascript, ton this ne vaut rien.
remplace disabled par readonlyEnvoyé par Emcy
readonly ne fonctionne a priori pas (contrairement a disable)
actuellement ça fonctionne avec cette methode :
=> le probleme est qu'il faut rentrer le nom de la checkbox a chaque fois (donc perte de l'utilité d'utiliser une fonction) : comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function DisableElement(Nom) { var boutons = document.getElementById(Nom).getElementsByTagName('input'); for(var i = 0; i <= boutons.length-1; i++) { boutons[i].disabled = document.Nomformulaire.NomCheckbox.checked; } }
Y a emmêlage, là, non ?Envoyé par Matthieu2000
A+
Dans la fonction effectivement, mais si c'est le paramétre passé, tu récupères l'objet dans la fonction :Envoyé par Bisûnûrs
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part onQuelqueChose="DisableElement(this);"
merci, ça marche nickel
et merci pour votre rapidité...
plutot que de juste grisé les radioboutons, j'aimerais griser tous les elements qu'il y a dans la div (du texte + des radio boutons)
j'ai fait cette fonction qui marche très bien sous IE7 mais pas sous firefox : que faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function DisableElement(Nom, CheckBox) { var boutons = document.getElementById(Nom); boutons.disabled = CheckBox.checked; }
Seul IE permet la confusion entre NAME et ID !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part var boutons = document.getElementById(ID);
Donner un ID à ta checkbox et le passer en paramètre à la fonction (puisque c'est lui qui est attendu et non le name) ...
A+
il me semble que tu n'as pas bien compris mon probleme...
dans ma page j'ai :
lorsque je clic sur une checkbox, je lance le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <div id="GLOBALConf"> <p> Data Transfer Rate :<br/> <label><input type="radio" name="debit1" value="0" /> 10 Mbits/s</label><br/> <label><input type="radio" name="debit1" value="1" checked="checked" /> 100 Mbits/s</label> </p> <p> Transmission Mode :<br/> <label><input type="radio" name="duplex1" value="0" /> Half-Duplex</label><br/> <label><input type="radio" name="duplex1" value="1" checked="checked" /> Full-Duplex</label> </p> </div>
=> sous IE7, ça me grise ma zone mais pas sous firefox...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function DisableElement() { var myZone = document.getElementById('GLOBALConf'); myZone.disabled = true; }
Ben c'est à dire : je fais avec ce que j'ai, à savoir ton code !Envoyé par Emcy
Si il change en off, je suis pas devin.
L'ID en dur est une mauvaise idée.
A+
Partager