[Résolu] SELECT, option choisie: activer un champs texte

Eléphanteau du PHP | 14 Messages

29 sept. 2005, 16:42

Bonjour tout le monde !

Voila, j'ai qq soucis en JS. Je voudrais implémenter un script pour lequel, lorsque l'utilisateur choisi une certaine option d'une liste, un champs texte apparait a coté.

Par exemple, lorsque l'utilisateur doit choisir une catégorie, si il clique sur "Nouvelle Categorie", un champs texte apparait a coté pour qu il entre cette catégorie.

Voila mon code qui ne marche pas.

Code : Tout sélectionner

function actdesact() { if (document.getElementById('category').options[document.getElementById('category').selectedIndex].value =! "new") document.modifmultischedule.category_new.disabled=true; else document.modifmultischedule.category_new.disabled=false; }
et pour la LIST :

Code : Tout sélectionner

<select name="category" onChange='javascript:actdesact()'> <? $tableau_propre = array_wo_duplicate_values ("category"); foreach ($tableau_propre as $categories_ok){ ?> <option value="<? print "$categories_ok"; ?> "> <? print "$categories_ok"; ?> </option> <? } ?> <option value="new"> >-- Nouvelle --< </option> </select>
Cela ne marche pas ... Une idée ?

Merci d'avance.

A bientot
Modifié en dernier par jckfun le 30 sept. 2005, 14:46, modifié 2 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 sept. 2005, 16:57

Salut, deja pour pouvoir utiliser getElementById('category') correctement il faut inclure un id="category" dans la balise select.
Peut etre que ça arrabgera deja la chose :wink:

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

Eléphanteau du PHP | 14 Messages

29 sept. 2005, 17:02

Merci pour la remarque.

Cela ne change rien.

A bientot

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 sept. 2005, 17:23

tu ne fait pas de qu'il faut pour y arriver :wink:

javascript:
function actdesact()
   {
       if (document.getElementById('category').options[document.getElementById('category').selectedIndex].value != "new")
           document.modifmultischedule.category_new.disabled=true;
       else
           document.modifmultischedule.category_new.disabled=false;
   }
Remarque: on note != et non =!

pour l'appel a la fonction javacript essai plustot comme ceci:
onChange='actdesact(this)'
j'ai testé chez moi et ça marche tres bien, courage :wink:

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

Eléphanteau du PHP | 14 Messages

29 sept. 2005, 17:49

Merci Truc pour ta réponse.

J'ai fait les modifs, et ca ne marche toujours pas ...

Je ne comprends pas !

Pourrais tu me mettre ton code sur une page pour que je vois en effet que ca marche, car la, c est un peu enervant :oops:

A bientot et merci d'avance

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 sept. 2005, 18:00

voila le code, tel que je l'ai:

je suis sur que tu n'a qu'un simple oubli :wink:
<html>
<head>
<title>Document sans nom</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">

function actdesact()
   {
       if (document.getElementById('category').options[document.getElementById('category').selectedIndex].value != "new")
           document.modifmultischedule.category_new.disabled=true;
       else
           document.modifmultischedule.category_new.disabled=false;
   }  

</script>
</head>
<body>
<form method="get" action="ma_page.html" name="modifmultischedule">   

   <input type="text" name="category_new" disabled>
   <select name="category" id="category" onChange='actdesact(this)'>
		<option value="1"> 1 </option>
		<option value="2"> 2 </option>
		<option value="3"> 3 </option>
       <option value="new"> >-- Nouvelle --< </option>
    </select>
</form>
</body>
</html> 
En principe c'est pas bien de balancer un code comme ca mais si tu veut des explications, demandes :wink:

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

Invité
Invité n'ayant pas de compte PHPfrance

29 sept. 2005, 19:39

Merci pour ce code, enfin, je ne vois pas de difference notable avec le mien ...

Je teste ca demain, et je te dis quoi.

Merci beaucoup en tout cas !!!

Bonne soirée.

Eléphant du PHP | 227 Messages

29 sept. 2005, 22:07

Bonjour truc,

j'ai suivi le post, qui m'a l'air interressant. Je suis un peu dans le meme cas de figure que "jckfun", et ton bout de code rend m'a rendu bien service, ne connaissant rien au javascript.

Mais j'ai deux questions, bien sur si tu as le temps.

- Peut on utiliser le meme code javascript pour faire apparaitre la balise input avec un display=none, en place de l'activité? j'ai essayé je trouve pas. :oops:

- Est on obliger de passer par du javascript pour ce genre de chose, ou bien peut on le faire entièrement en php ?

Merci :roll:

jckfun2
Invité n'ayant pas de compte PHPfrance

30 sept. 2005, 11:49

Truc,

Merci d'avoir consacré du temps à la résolution de mon probleme.

EN fait, j'avais oublié de mettre "disbled" en propriété de l'INPUT.

Un peu stupide que je suis ...

Sinon, la remarque de gesualda me semble etre tres interessante. Cela pourrait etre une amelioration de ce que je veux faire.

Est ce possible de masquer l INPUT et non le désactiver ?

A bientot.

Invité
Invité n'ayant pas de compte PHPfrance

30 sept. 2005, 14:07

En cherchant un petit peu,

J'ai trouvé la solution:
function actdesact() 
   { 
       if (document.getElementById('category').options[document.getElementById('category').selectedIndex].value != "new"){
			        document.getElementById('category_new').style.display = "none";
			        document.getElementById('category_new').style.visibility = "hidden";
			        document.forms["modifmultischedule"].elements["category_new"].value = "";
			 }
       else {
			        document.getElementById('category_new').style.display = "";
			        document.getElementById('category_new').style.visibility = "visible";
			 }
   }
et pour mon input text:
<input type="text" name="category_new" id="category_new" style="display: none" maxlength="50" />
En esperant que ca puisse aider quelqu un

A bientot

Mammouth du PHP | 19672 Messages

30 sept. 2005, 14:10

Excellent, il manque plus que le [Résolu] ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: