activation d'un champ par rapport à un autre

Eléphant du PHP | 223 Messages

03 sept. 2007, 09:23

Bonjour,
J'ai un champ Pays et un champ departement dans mon formulaire. Par défaut, mon champ departement est disabled et il doit s'activer uniquement si mon champ Pays est égal à France...logique.
Dans un 1er tps, mon champ Pays était un Select et là, aucun pb, ma ptite fx javascript de changement d'etat marchait nickel. Mais j'ai voulu remplacer mon select par un champ avec autocompletion (etant donné qu'il y a trop de pays pour faire un select). Et là, ben ma fx javascript ne marche plus.
Ex: on tape 'F' dans le champ Pays, ca affiche une liste 'Fidji, Finlande, France'...mais qd on clique sur France pour selectionner, le champ departement reste disabled.

Si qq'un a une idée...
Merci et bonne journée à tous

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 sept. 2007, 10:26

Sur un champ de type select, tu peux détecter le changement de valeur avec onChange.
Avec un input de type text, il te faut utiliser onKeyPress (_Up, _Down, etc.) ou onBlur.

Dans le ca de l'autocomplétion tu sélectionnes ta valeur dans un div, donc pas de keypress dans le champ. Il te faut donc soit activer l'autre champ lorsque l'on quitte l'input (onBlur) ou bien modifier ta fonction d'autocomplétion, pour que lorsqu'une valeur est sélectionnée, une fonction soit appellée pour activer ou non ton second champ.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 223 Messages

03 sept. 2007, 12:25

merci, effectivement, j'avais mis onblur dans l'attente d'une autre solution. Il y a un petit pb avec onblur : Lorsque je tape 'France' ou que je selectionne 'France' dans ma liste d'autocomplétion, et que j'appuie sur TAB pour passer au champ suivant (qui est le champ departement), l'activation du champ departement marche bien, mais le TAB saute le champ departement. En fait, tab et l'activation du 2eme champ se font en meme tps, et donc du coups je ne peux pas passer du champ pays au champ departement par TAB. (meme avec des tabindex)
Est-ce qu'une solution serait de mettre un input text hidden avec un tabindex compris entre ceux de pays et departement? Du coup, il faudrait appuyer 2 fois sur TAB, mais au moins on conserverait l'ordre pays-->departement. J'ai essayé de mettre ne place cette solution, mais je n'y suis pas arrivé.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 sept. 2007, 13:47

Nope, les champs hidden ne peuvent pas être sélectionnés par tabulation... :(

Eventuellement ce que tu peux essayer de faire c'est donner le focus au champ juste après l'avoir activé :

Code : Tout sélectionner

document.formulaire.champ.disabled = false; document.formulaire.champ.focus();
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 13 Messages

03 sept. 2007, 14:39

salut peut-être que ce lien peut t'aider, il concerne l'activation d'un champ à partir d'un autre :
http://www.roodali.com/index.php?2007/0 ... deroulante

Eléphant du PHP | 223 Messages

03 sept. 2007, 15:50

Merci à vous 2, j'vais utiliser l'astuce de ryle et garder le lien de phil47 sous le coude, on sait jamais. Ca sera pas parfait, mais ca conviendra parfaitement.
Bonne journée