Méthode click(); sur un objet input : IE OK, mais MOZ NOK ?

Méthode click(); sur un objet input : IE OK, mais MOZ NOK ? - HTML/CSS - Programmation

Marsh Posté le 23-06-2005 à 11:49:53    

Hello,
 
Pour des raisons techniques (déport de l'affichage d'un formulaire), j'ai effectué une modification quant à un formulaire de type "file".
 
Le formulaire de type "file" est caché, et je laisse apparaitre un champ texte avec un bouton.
 
Voici le code source :  

Code :
  1. <input type="text" name="toto" id="toto" />
  2. <input type="button" name="truc" value="Choisir" onclick="ihih()" />
  3. <input type="file" name="ahah" id="ahah" style="display:none;" />
  4. <script type="text/javascript">
  5. function ihih() {
  6. document.getElementById('ahah').click();
  7. document.getElementById('toto').value = document.getElementById('ahah').value;
  8. }
  9. </script>


 
Ca fonctionne sur IE.
Mais sur Mozilla, il ne se passe rien... vous avez une idée du pourquoi ?
Raisons de sécurité particulière ?
 
Sachant que je ne fais pas ceci pour changer le texte du bouton "parcourir", mais pour déporter le champ "file" dans un autre endroit de la page (là où il y a le formulaire en fait), pour des raisons d'interface...
 
 
En gros  
 
HTML PAGE
INPUT TYPE FILE (il doit etre affiché ici)
blablabla
 
 
 
<form>
TOUS LES INPUTS en HIDDEN
<input type="submit" blablabla ... />
</form>
 
Merci à tous.

Reply

Marsh Posté le 23-06-2005 à 11:49:53   

Reply

Marsh Posté le 23-06-2005 à 11:51:04    

[:pingouino] Je pige pas l'interêt [:johneh]

Reply

Marsh Posté le 23-06-2005 à 12:00:14    

Moi non plus, mais on me demande de faire ça.
En gros, afficher un formulaire de type "file" à un autre endroit de la page, hors du formulaire caché rassemblant toutes les infos, et ce champ doit etre inclus lors de la validation...

Reply

Marsh Posté le 23-06-2005 à 12:02:33    

J'passe tout mon temps sur cette connerie depuis ce matin, j'sens que le resp. technique va aller se faire foutre [:kiki]

Reply

Marsh Posté le 23-06-2005 à 12:07:05    

Bon, déjà, comme florent j'ai du mal à voir l'intérêt: on modifie le comportement par défaut du navigateur pour rien au risque de gêner certains utilisateurs (javascript désactivé = DTC), de voir des bugs à la con apparaître (exemple ici, et IE et Moz/Fox ne sont pas les seuls navigateurs au mode) et de perdre tout le reste des utilisateurs, qui ne comprendront pas nécessairement la logique du bouzin.
 
C'est non seulement inutile, mais c'est illogique (on crée dans le markup des éléments redondants sans intérêt et on effectue des traitements redondants avec les actions natives pour rien) et dangereux

skylight a écrit :

document.getElementById('ahah').click();


wtf depuis quand les nodes ont un membre "click"? :heink:


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 23-06-2005 à 12:09:59    

un champ de type file est read-only.  
 
tu peux pas te permet d'ecrire un comptenu dans ce champ

Reply

Marsh Posté le 23-06-2005 à 12:10:29    

Il fait l'inverse, il prend le contenu du file pour le mettre ailleurs

Reply

Marsh Posté le 23-06-2005 à 12:12:04    

gatsusat a écrit :

un champ de type file est read-only.  
 
tu peux pas te permet d'ecrire un comptenu dans ce champ


Il n'écrit pas dedans.
 
Il déclenche manuellement l'action de click de l'input file puis récupère la valeur pour la mettre dans un input text, donc il n'écrit jamais explicitement dans l'input file.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 23-06-2005 à 12:17:25    

masklinn a écrit :

Bon, déjà, comme florent j'ai du mal à voir l'intérêt: on modifie le comportement par défaut du navigateur pour rien au risque de gêner certains utilisateurs (javascript désactivé = DTC), de voir des bugs à la con apparaître (exemple ici, et IE et Moz/Fox ne sont pas les seuls navigateurs au mode) et de perdre tout le reste des utilisateurs, qui ne comprendront pas nécessairement la logique du bouzin.
 
C'est non seulement inutile, mais c'est illogique (on crée dans le markup des éléments redondants sans intérêt et on effectue des traitements redondants avec les actions natives pour rien) et dangereux
 
wtf depuis quand les nodes ont un membre "click"? :heink:


 
 
Je sais très bien tout ça... [:splinter]  
 
Mais tu sais, dans le monde pro, parfois tu n'as pas le choix, tu ne peux pas forcément étaler toute ta science CSS/XHTML et sa sémantique correcte...

Reply

Marsh Posté le 23-06-2005 à 12:22:35    

skylight a écrit :

Mais tu sais, dans le monde pro, parfois tu n'as pas le choix, tu ne peux pas forcément étaler toute ta science CSS/XHTML et sa sémantique correcte...


T'as toujours le choix d'expliquer au dissaïdor que ce qu'il demande est un non sens, et pourquoi [:spamafote]  
 
Si tu l'as pas, il y a un problème dans la logique de fonctionnement de ta boite [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 23-06-2005 à 12:22:35   

Reply

Marsh Posté le 23-06-2005 à 12:23:06    

Et surtout pourquoi ce n'est pas réalisable :D

Reply

Marsh Posté le 23-06-2005 à 13:03:00    

masklinn a écrit :

T'as toujours le choix d'expliquer au dissaïdor que ce qu'il demande est un non sens, et pourquoi [:spamafote]  
 
Si tu l'as pas, il y a un problème dans la logique de fonctionnement de ta boite [:spamafote]


 
Il comprend très bien, mais c'est ce que le client demande...
 
Vous croyez que je me la joue bourrin en positionnant le formulaire "file" de manière absolue ? [:ddr555] ?

Reply

Marsh Posté le 23-06-2005 à 13:47:49    

skylight a écrit :

Il comprend très bien, mais c'est ce que le client demande...


Le principe est le même, c'est à toi en tant que concepteur/designer d'expliquer au client pourquoi c'est bien/mal de faire quelque chose (avec des arguments qui lui parlent), de le mettre en garde [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 23-06-2005 à 15:05:23    

Et je continue, j'ai déjà expliqué tout ça au client, mais il reste sur sa position, c'est-à-dire qu'il veut ceci exactement [:spamafote]
Moi je m'en fous...

Reply

Marsh Posté le 23-06-2005 à 15:13:31    

En fait, c'est pour faire un input file, mais avec un style spécial ?

Reply

Marsh Posté le 23-06-2005 à 15:16:44    

Reply

Marsh Posté le 23-06-2005 à 16:38:37    

Je connaissais cette technique, mais malheureusement ce n'est pas le sujet du problème ;)
 
Enfin bon j'vais positionner mon truc en absolu, ça sera plus vite réglé ...
 
Enfin,
 

Citation :


Unfortunately Mozilla and Opera haven't added this method to file upload fields


 
Donc j'ai pas rêvé. Firefox ne supporte pas encore la fonction click(); sur les inputs de type file.

Reply

Marsh Posté le 23-06-2005 à 16:39:24    

Ah ? Mais ça permet d'avoir ton input planqué, et d'avoir le reste à la place. Donc j'ai vraiment pas du piger

Reply

Marsh Posté le 23-06-2005 à 16:46:56    

ca fait un peu gros trou de sécurité quand même ca, de cliquer à la place de l"humain.
tu diras au client que c'est naze ce qu'il cherche à faire

Reply

Marsh Posté le 23-06-2005 à 16:51:26    

skylight a écrit :


Vous croyez que je me la joue bourrin en positionnant le formulaire "file" de manière absolue ? [:ddr555] ?


 
Je trouve ça moins bourrin de positionner l'input via CSS pour qu'il soit visuellement à un autre endroit que d'aller faire cette bidouille en JS. C'est un peu le but des CSS et des positionnements absolu, garder une sémantique correcte dans le HTML mais tout boulverser à l'affichage.


Message édité par antp le 23-06-2005 à 16:52:36

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 23-06-2005 à 16:58:15    

+1

Reply

Marsh Posté le 23-06-2005 à 17:00:28    

+2 http://www.snook.ca/archives/000376.html :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 23-06-2005 à 17:34:30    

FlorentG a écrit :

Ah ? Mais ça permet d'avoir ton input planqué, et d'avoir le reste à la place. Donc j'ai vraiment pas du piger


Pour ta technique, il faut que les 2 inputs "file" et text soient l'un en dessous de l'autre. (C'est ce qui donne l'impression de cliquer sur le bouton alors qu'en fait tu cliques sur l'input "file" ).
Ou alors c'est moi qui n'ai rien compris.
 
Hors, moi, il faut qu'ils soient à des endroits différents (visuellement)

Reply

Marsh Posté le 23-06-2005 à 20:28:24    

Waaaa ok. Donc on voit les deux ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed