Page 1 sur 1
[Résolu] SELECT, option choisie: activer un champs texte
Posté : 29 sept. 2005, 16:42
par jckfun
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
Posté : 29 sept. 2005, 16:57
par Truc
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

Posté : 29 sept. 2005, 17:02
par jckfun
Merci pour la remarque.
Cela ne change rien.
A bientot
Posté : 29 sept. 2005, 17:23
par Truc
tu ne fait pas de qu'il faut pour y arriver
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

Posté : 29 sept. 2005, 17:49
par jckfun
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
A bientot et merci d'avance
Posté : 29 sept. 2005, 18:00
par Truc
voila le code, tel que je l'ai:
je suis sur que tu n'a qu'un simple oubli
<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

Posté : 29 sept. 2005, 19:39
par Invité
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.
Posté : 29 sept. 2005, 22:07
par gesualda
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.
- Est on obliger de passer par du javascript pour ce genre de chose, ou bien peut on le faire entièrement en php ?
Merci

Ca marche !
Posté : 30 sept. 2005, 11:49
par jckfun2
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.
Posté : 30 sept. 2005, 14:07
par Invité
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
Posté : 30 sept. 2005, 14:10
par Cyrano
Excellent, il manque plus que le [Résolu]
