jesscolor83
Messages postés15Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention 2 mai 2007
-
18 avril 2007 à 16:43
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014
-
2 mai 2007 à 09:20
Bonjour,
je suis bloqué sur un code javascript depuis assez de temps et je suis bloquée.
Voila, j'ai 2 boutons radios (oui, non), quand la personne clique sur non, je veux que certains champs se désactivent et quand elle clique sur oui, ces champs s'activent. Malheureusement avec mon code, il n'y a que le premier champ qui se désactive et pas les autres, si quelque peut m'aider, merci
Voici mon code:
(Mon code javascript)
<script language="Javascript">
function ActivDesactiv(Controleur, Controle, Masquer) {
var objControleur = document.getElementById(Controleur);
var objControle = document.getElementById(Controle);
if (Masquer=='1')
objControle.style.visibility=(objControleur.checked==true)?'visible':'hidden';
else
objControle.disabled=(objControleur.checked==true)?false:true;
return true;
}
</script>
(Mes 2 champs oui et non)
<form name="formpret" action="" method="post">
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 19 avril 2007 à 14:19
Il faut que la fonction LockUnlockElements soit comme dans la première solution que je t'ai proposé (qu'elle prenne un paramètre..).
Le code php doit être placé après la déclaration de la fonction (en dehors des balises <script>) pour ne pas appeler une fonction pas encore déclarée.
Ensuite tu peux enlever le onload de ton champs hidden (voire même enlever le champs si tu ne doit pas passer la valeur à la page suivante).
<script language="Javascript">
function LockUnlockElements(valeur) {
if (valeur=="on") {
document.getElementById("salairenetco").style.visibility="visible";
}
else {
document.getElementById("salairenetco").style.visibility="hidden";
}
}
</script>
<?php
echo "<script language='javascript'>LockUnlockElements('" . $_POST['ouico'] . "')</script>"; //Execution de la fonction
?>
et dans le hidden :
" />
Le hidden ne sert plus alors qu'à passer $ouico à la page suivante
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 18 avril 2007 à 18:07
Pour activer ou désactiver une liste d'éléments, j'utiliserais plutôt une checkbox à laquelle j'associerait un label avec le texte "Déverrouiller".
D'autre part, en mettant le même index ("list_1") à trois éléments différents, comment veux tu que javascript s'y retrouve!...
Celà donnerait quelque chose comme celà :
<script type="text/javascript">
function LockUnlockElements() {
if (document.getElementById("checkLock").checked) {
document.getElementById("checkLock").checked=false;
document.getElementById("list_1").style.visibility="hidden";
document.getElementById("text_nom").style.visibility="hidden";
document.getElementById("text_prenom").style.visibility="hidden";
}
else {
document.getElementById("checkLock").checked=true;
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 18 avril 2007 à 18:41
J'ai fait une petite coquille dans le code et il faut enlever deux lignes inutiles :
<script type= "text/javascript">
function LockUnlockElements() {
if (document.getElementById("check l ock").checked) {
document.getElementById("list_1").style.visibility ="hidden";
document.getElementById("text_nom").style.visibility="hidden";
document.getElementById("text_prenom").style.visibility="hidden";
}
else {
document.getElementById("list_1").style.visibility="visible";
document.getElementById("text_nom").style.visibility="visible";
document.getElementById("text_prenom").style.visibility="visible";
}
}
</script>
<form name=""formpret">
jesscolor83
Messages postés15Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention 2 mai 2007 18 avril 2007 à 23:44
Re,
je voudrais savoir autre chose. Mon formulaire est en plusieurs étapes et je souhaite que lorsque je décoche ou coche la checkbox, que dans les autres pages ca se "mémorise" pour que les champs apparaissent ou pas selon le cas .
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 19 avril 2007 à 09:45
Il y a bien les cookies utilisées à partir d'un script client (à ce sujet consulter le site suivant http://www.w3schools.com/js/js_cookies.asp). Pour ma part j'utilisait beaucoup les cookies dans des scripts coté serveur (ASP), aujourd'hui je conseillerais les scripts PHP qui sont beaucoup plus universels. En tous cas, l'utilisation des scripts pour créer des cookies est nettement plus aisée coté serveur que coté client.
Le plus simple serait d'utiliser des frames et de conserver les éléments à utiliser sur plusieurs pages dans un frame apparaissant dans chacune de ces pages.
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 19 avril 2007 à 12:25
Si tu fais du php (enfin j'imagine que ça existe aussi dans les autres langages) tu peux utiliser des sessions. Ca évite d'avoir des problèmes si le client n'autorise pas les cookies, et la session est détruite quand on ferme le navigateur...
jesscolor83
Messages postés15Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention 2 mai 2007 19 avril 2007 à 12:47
Alors j'ai fais autrement mais je ne trouve pas l'évenement qu'il faut.
En fait, dans la seconde page j'ai récupéré la valeur de la checkbox et je l'ai incorporé dans un champ caché mais malheureusement je ne trouve pas l'évènement et je sais pas si c'est possible.
(Je récupère la valeur)
<?
$ouico=$_POST['ouico'];
?>
(Le code javascript)
<script language="Javascript">
function LockUnlockElements() {
if (document.getElementById("ouico2").value=="on") {
document.getElementById("salairenetco").style.visibility="visible";
}
else {
document.getElementById("salairenetco").style.visibility="hidden";
}
}
</script>
(Je la mets dans un champ caché)
<form name="formpret" action="" method="post">
" OnLoad="LockUnlockElements()" />
(Le champ que je souhaite masquer si ouico2 n'est pas pas egal à on)
jesscolor83
Messages postés15Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention 2 mai 2007 19 avril 2007 à 14:32
Je te remerci vraiment de ton aide mais aucune des 2 solutions ne fonctionnent.
Pourtant quand je fais un echo de $ouico, ca me retourne "on" si la checkbox a été cochée dans la page précédente et ce ne me retourne rien si elle a été décochée. Je sais pas d'où vient le problème, je pense que le onload ne fonctionne pas.
jesscolor83
Messages postés15Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention 2 mai 2007 19 avril 2007 à 14:38
Bien rien ne se passe. Je veux que ca fasse comme sur la premiere page, c'est a dire que lorsque la checkbox est décochée ca désactive des champs. Dans le seconde page, je récupère la valeur de la checkbox mais rien ne se passe, les champs ne se désactivent pas. En gros je crois que le code javascript ne se lit pas, mon champs salairenetco ne se désactive pas.
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 19 avril 2007 à 14:44
Il faudrait peut etre essayer de voir si $_POST['ouico'] existe et si il contient quelque chose. C'est assez strange les checkbox. Tu teste peut etre une valeur qui n'existe pas.
dans ce cas un truc du genre
<?php
if (empty($_POST['ouico'])) $ouico = "off";
else $ouico = $_POST['ouico'];
?>
pourrait arranger les choses.
Essaye d'afficher $_POST['ouico'] en ayant coché et sans avoir coché, pour voir si ça marche dans tous les cas...