activer liste déroulante et case a cocher

Eléphant du PHP | 89 Messages

10 mars 2006, 16:31

mon sujet n'est pas très précis car j'ai assez de place pour la fin de ma phrase.
bonjour,
en faite je souhaite après sélection d'un élément dans une liste déroulante, permettre l'acces à une autre liste déroulante et une case à cocher.
En gros cette liste déroulante et cette case à cocher (se sont des options de l'élement selectionné dans la liste principale) ne seraient accéssible uniquement si il y a une sélection dans la liste principale.

Alors voici ma fonction javascript:
//permet la selection d'un bac ou du R/V s'il y a changement d'impr virtuelle
function activebacrv( imprv,listbac,cochrv )
{
	if(impr.)
	{
	        window.document.forms['general'].elements[listbac].disabled = false;
                window.document.forms['general'].elements[cochrv].disabled = false;
        }
        else
        {
        	window.document.forms['general'].elements[listbac].disabled = true;
                window.document.forms['general'].elements[cochrv].disabled = true;
        }
}
Le probleme c'est que je ne trouve pas quelle condition je dois mettre dans le if .
cette fonction je l'utilise dans une liste déroulante avec comme action onChange. mais rien n'y fait.
pour ma liste et ma case je les met par défaut en disabled.
Donc si quelqu'un pouvait m'aider car je ne trouve pas comment expliciter le fait que la valeur de la liste principale est différent de zero ou non vide...
j'ai testé !empty(impr) , impr.value!=0 ... sa doit etre faut car rien ne se passe.

voici les lifgne poula liste deroulante et la case a cocher:
//chooix de bac si autre imprimante virtuelle selectionné
printf("Choisissez le numéro de Bac : ");
printf("<SELECT NAME='bac' ID='chxbac' disabled=\"disabled\">");
printf("<OPTION value=0>Choix bac</OPTION>");
printf("<OPTION value=1>Bac1</OPTION>");
printf("<OPTION value=2>Bac2</OPTION>");
printf("<OPTION value=3>Bac3</OPTION>");
printf("<OPTION value=4>Bac4</OPTION>");
printf("<OPTION value=5>Bac5</OPTION>");
printf("<OPTION value=6>Bac6</OPTION>");
printf("<OPTION value=7>Bac7</OPTION>");
printf("<OPTION value=8>Bac8</OPTION>");
printf("<OPTION value=9>Bac9</OPTION>");
printf("<OPTION value=10>Bac0</OPTION>");
printf("</SELECT>");

//choix du recto verso possible
printf(" Recto/Verso:<INPUT TYPE='checkbox' NAME='rv' ID='chxrv' disabled=\"disabled\">");
printf("<br>");
voilà merci pour votre aide!!!

Eléphant du PHP | 89 Messages

10 mars 2006, 16:37

a propos de mon erreur de frappe je viens de m'en apercevoir en postant le message j'ai donc fait la modif mais sa ne marche toujours pas sinon j'aurais pété un cable!!!
voilà j'ai rectifié impr en imprv!!!

HELP!!!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

10 mars 2006, 22:44

Salut,

Est-ce que le choix de la liste principale peut être quelconque (différent du choix par défaut qui vaut 0) pour rendre disponible la 2nde liste et la case à cocher ?

Ou chaque option ouvre vers sa liste et case à cocher ?

Que met tu dans le "onchange" => imprv? listbac ? cochrv ? (pas évident non plus ces noms de varaible pour t'y retrouver plustard :?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 89 Messages

13 mars 2006, 18:57

désolé pour ma reponse tardive!!!

en fait la liste principale active un liste générale quelque soit la sélection.
ben fait imprv serait la sélection dans la liste principale, listbac correspondrait à l'objet liste déroulante à activer et cochrv à la case à cocher à activer quand il y a sélection dans la liste principale...
voilà!!!!

ben niveau noms des variable en fait je ne sais jamais comment les nommé, on me dit qu'ils doivent etre explicite mais avec moi ils risquent d'etre un peu long comme nom de variable donc pour eviter je fait des abréviations!!! c'est pas évedent!!!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 mars 2006, 23:36

quelque chose dans ce style devrai fonctionner alors:

Le test dans la focntion Javascript (avec le reste du code :wink:)
if(imprv != "")
si le 1er élément (ou l'élément par défaut) est une chaine vide.

évènement à placer dans le <select> de la 1ère liste:
onchange="activebacrv(this.value,'bac','rv');"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 mars 2006, 23:49

tu peux même aller plus loin en cachant les champs et les rendre visible qu'en cas de sélction dans la 1ère liste. Tu peux regarder ce post

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 89 Messages

14 mars 2006, 19:37

Devine quoi, pour etre la reine des erreur bete je suis la premier!!! en faisant les modif que tu m'as indiqué sa ne marchait toujours pas et je ne comprennais pas pourquoi et j'ai alors relu ton message et me suis rendu compte que j'avais mis ma fonction dans option plutot que select... vraiment une erreur bete !!!!

Merci infiniment!!!

sinon une autre petite question quelle différence y a t'il entre le ID et le NAME???

MERCI encore une fois!!!!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 mars 2006, 01:40

De rien :wink:
sinon une autre petite question quelle différence y a t'il entre le ID et le NAME???

L'attribut "id" remplace le "name" en XHTML, il s'agit donc d'une ancienne notation et de la nouvelle. Un peu plus de détails ICI

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 89 Messages

15 mars 2006, 13:03

MERCI j'en prends note!!!