Page 1 sur 1

Modifier un type d'input si checkbox cochée

Posté : 26 févr. 2007, 17:13
par VaN
Bonjour,

Je souhaiterai pouvoir modifier le type de quelqu'uns de mes inputs, lorsqu'une checkbox est cochée : Initialement, ces champs sont invisibles, donc de type HIDDEN. Lorsque l'utilisateur coche la checkbox, ils deviennent apparents, et de type FILE.

Est ce possible ?

Voilà le script que j'ai pour le moment créer. Il repère bien que la checkbox est cochée ou non, mais je n'arrive pas à modifier le type des inputs :

Code : Tout sélectionner

function show() { if(document.getElementById("multiple").checked == true) { document.getElementById("photo").type = "file"; } } ... <tr> <td>Envoi multiple :</td> <td><input type="checkbox" name="multiple" id="multiple" onchange="javascript:show();" /></td> </tr> <tr> <td></td> <td><input type="text" name="photo" size="40" id="photo" /></td> </tr> <tr> <td></td> <td><input type="text" name="photo" size="40" id="photo" /></td> </tr>
Comment dois-je modifier mon script ?

Sinon, existe t'il une autre solution, comme par exemple, avoir deja des champs FILE à la base, mais invisibles, et les passer apparents lorsque la checkbox est cochée ?

Re: Modifier un type d'input si checkbox cochée

Posté : 26 févr. 2007, 19:46
par Truc
Sinon, existe t'il une autre solution, comme par exemple, avoir deja des champs FILE à la base, mais invisibles, et les passer apparents lorsque la checkbox est cochée ?
tout à fait !
function show()
{
   if(document.getElementById("multiple").checked == true)
   {
      document.getElementById("photo_file").style.display = "";
   }
}

<input type="file" name="photo_file" style="display:none" size="40" id="photo_file" /></td> 
attention un id doit être unique !

Par le DOM

Posté : 26 févr. 2007, 20:09
par Phil 93
Sinon, une solution qui fonctionne chez moi, sur Firefox, et + « DOMable » :

monObjetHidden.setAttribute('type', "file") ;

Bien à toi,

Phil

Ben non…

Posté : 26 févr. 2007, 20:13
par Toujours Phil 93
Ben non… en fait, ton erreur, elle vient simplement du fait que tu t'adresses à un objet DOM (getElementByID), comme son nom l'indique : « by ID ». Or, ton objet n'a qu'un « name ».

Si tu définis « id="photo" » au lieu de « name="photo" » (ou les deux si tu travailles avec un formulaire), alors aucun problème pour utiliser :

monObjetHidden.type = "file"

Bien à toi,

Phil

Re: Ben non…

Posté : 26 févr. 2007, 21:43
par Truc
Ben non… en fait, ton erreur, elle vient simplement du fait que tu t'adresses à un objet DOM (getElementByID), comme son nom l'indique : « by ID ». Or, ton objet n'a qu'un « name ».
justement il en a 2 ayant la même valeur pour l'attribut "id" donc un de trop.

Tu as raison

Posté : 26 févr. 2007, 21:53
par Phil93
Oui, tu as raison. J'avais lu le code à moitié, donc une moitié de deux, ça m'en faisait qu'1. :D

Et j'avais lu comme j'avais voulu (en fait, j'avais bu — « j'ai bu, j'ai lu, j'ai pas vu » César dixit). Au survol, j'avais même pas vu qu'il avait mis des id… bizarre…

Quoi qu'il en soit, même moi qui ne suis qu'un poète, je ne code pas avec d'aussi grosses moufles… Enfin… ce que j'en dis…

Bien à vous,

Phil