Méthode click(); sur un objet input : IE OK, mais MOZ NOK ? - HTML/CSS - Programmation
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...
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
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"?
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
Marsh Posté le 23-06-2005 à 12:10:29
Il fait l'inverse, il prend le contenu du file pour le mettre ailleurs
Marsh Posté le 23-06-2005 à 12:12:04
gatsusat a écrit : un champ de type file est read-only. |
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.
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. |
Je sais très bien tout ça...
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...
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
Si tu l'as pas, il y a un problème dans la logique de fonctionnement de ta boite
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 |
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 ? ?
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
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
Moi je m'en fous...
Marsh Posté le 23-06-2005 à 15:13:31
En fait, c'est pour faire un input file, mais avec un style spécial ?
Marsh Posté le 23-06-2005 à 15:16:44
Solution ici : http://www.quirksmode.org/dom/inputfile.html
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 : |
Donc j'ai pas rêvé. Firefox ne supporte pas encore la fonction click(); sur les inputs de type file.
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
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
Marsh Posté le 23-06-2005 à 16:51:26
skylight a écrit : |
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.
Marsh Posté le 23-06-2005 à 17:00:28
+2 http://www.snook.ca/archives/000376.html
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)
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 :
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.