5160 sujets

Le Bar du forum

Modérateur
Bonjour,

Depuis un bon moment déjà sur Firefox, il n'est plus possible d'éditer la valeur d'un input file. Dès qu'on clique dedans, la fenêtre de sélection de fichier s'ouvre.

Une fois la sélection effectuée, en tant qu'utilisateur, je n'ai pas trouvé comment vider le contenu du champ? J'ai essayé de le sélectionner et d'appuyer sur ESC, sur Suppr, sur backspace, à peu près toutes les touches du clavier. J'ai aussi vérifié dans le menu contextuel. Rien pour supprimer le chemin. On peut uniquement le changer en sélectionnant un autre fichier. Google ne m'a pas non plus éclairé.

Je suis obligé de passer par le Javascript pour supprimer la valeur d'un input file. Ça doit être tout simple pourtant...

Une idée?
Modifié par Tony Monast (14 May 2012 - 15:05)
Je me suis posé la même question et j'ai jamais trouvé. Le top du top c'est quand tu fais "Rafraichir" pour recharger la page et que le champ est toujours rempli. C'est de la magie noire...
Je pense que c’est un gros raté de firefox… l’équipe responsable a dû se faire sévèrement fouetter.
Je n’ai jamais trouvé de raison particulière à cette architecture… mais c’est pénible.

Une extension a même été créée pour palier le problème : https://addons.mozilla.org/fr/firefox/addon/bug431098clear-file-upload-fie/

… mais aller expliquer ça simplement à un client … quel cauchemar.

Édition :
par curiosité, j’ai voulu voir comment les autres navigateurs s’en sortaient et bah même combat, sur Mac en tout cas, Firefox, Chrome, Safari c’est la galère pareil. Seul Opéra s’en sort bien avec un menu pour supprimer l’entrée.
Modifié par Jules-F (14 May 2012 - 21:44)
Bonjour à toutes et à tous,

c'est une blague ou quoi ? Smiley eek

Il suffit de faire un "reset" et le input est remis à zéro.
Je vous indique deux solutions. Le classique bouton "reset" et le "onclick" sur la zone que l'on désire remettre à zéro. Et en plus, cela fonctionne sur tous les navigateurs.
<!doctype html>
<html>
<head>
<title>Remise à zéro d'un input file</title>
</head>

<body>
<form action="">
	<input type="file" size="60" onclick="this.parentNode.reset();" />
	<input type="reset">
</form>
			
</body>
</html>


@+
a écrit :
<input type="file" size="60" onclick="this.parentNode.reset();" />


Salut,
on parle d'un input file, attention. Le bouton Reset a une fonction très limitée, on ne peut agir que sur le texte.
Bonsoir jmlapam,

oui, merci, j'avais compris qu'il s'agissait d'un input file.
Et qu'est-ce que tu crois qu'il y a dans le input ? C'est une zone de texte disabled ? Smiley langue

Avant de répondre, j'ai fait une recherche et des tests.
Tu crois que je donne du code sans le tester.

Cette solution fonctionne très bien car je l'ai testé sur mes cinq navigateurs : MSIE 8.0, Firefox 12.0, Google Chrome 19.0, Opera 11.62 et Apple Safari 5.1.5 !

Tony Monast parle d'une action sur cette zone afin de la remettre à vide, sans l'usage du javascript. Comme la zone input est inaccessible à la saisie, il faut bien agir par un évènement associé à un bout de code en javascript.

Sinon, je n'ai pas compris où il y a un problème ?

@+
Modifié par Artemus24 (19 May 2012 - 05:01)
Modérateur
Bonsoir Artemus,

Je ne cherche pas une solution technique en tant que développeur/intégrateur. J'utilise déjà une solution à base de Javascript pour permettre aux utilisateurs de supprimer le contenu de l'input file.

La question est d'un point de vue du simple utilisateur de Firefox qui arrive sur un formulaire avec un input file et où le concepteur du formulaire n'a pas mis en place de solution pour vider le champ.

C'est au navigateur d'avoir une solution pour supprimer/annuler la sélection d'un fichier avec un input file. Il est possible de suivre les discussions du rapport de bug. Ça permet de comprendre aussi pourquoi le champ n'est plus éditable pour l'utilisateur.
Modifié par Tony Monast (18 May 2012 - 00:03)
Administrateur
jb_gfx a écrit :
Je me suis posé la même question et j'ai jamais trouvé. Le top du top c'est quand tu fais &quot;Rafraichir&quot; pour recharger la page et que le champ est toujours rempli. C'est de la magie noire...

F5 ou Ctrl-F5 ? Parce que les champs de formulaire sont pas remis à zéro avec F5, quand je teste.

J'ai jamais été confronté au problème mais j'imagine que ça doit être bien embêtant ... du coup faut cibler un autre fichier du mauvais type ou de 0 octet pour écraser le 1er choix ? Ouch
Felipe a écrit :

F5 ou Ctrl-F5 ? Parce que les champs de formulaire sont pas remis à zéro avec F5, quand je teste.


F5 ou click droit -> Actualiser. Firefox 12 sous Windows 7 64 bit. Je viens de tester à nouveau à l'instant et je confirme. Avec CTRL + F5 le champs se vide bien. Sur la page où je teste il s'agit d'un input file des plus classique.

Je colle le code du formulaire complet (difficile de faire plus simple) :


<form id="frm_profile_picture" method="post" action="/mon-compte/photos" enctype="multipart/form-data">
					
<fieldset>
  <legend>Télécharger une photo</legend>

  <div>
    <label for="profile_picture">Choisir un fichier</label>
    <input id="profile_picture" name="profile_picture" type="file" />
  </div>

</fieldset>

<div class="buttons">
  <input class="button large" type="submit" name="profile_picture_submit" value="Télécharger la photo" />
</div>

</form>


Et je confirme aussi que la page se recharge bien, c'est clairement visible. J'ai même désactivé toutes mes extensions et c'est pareil.
Modifié par jb_gfx (18 May 2012 - 19:46)
jb_gfx a écrit :
Je me suis posé la même question et j'ai jamais trouvé. Le top du top c'est quand tu fais "Rafraichir" pour recharger la page et que le champ est toujours rempli. C'est de la magie noire...

F5 (Windows, Linux) ou Command+R (Mac): Firefox garde la saisie dans les formulaires (je pourrais pas vivre sans pour ma part...).
Control+F5 (Windows, Linux) ou Command+Shift+R (Mac): Firefox vide la saisie dans les formulaires (et recherche tous les éléments de la page sans tenir compte du cache). Ou bien on peut placer le focus dans la barre d'URL et appuyer sur Entrée, même résultat pour la page mais sans rechargement des ressources externes.
Bonsoir à toutes et à tous,

pourquoi ne pas créer un bouton reset dans le formulaire ?
Tu cliques sur le bouton et toutes les zones sont remises à la valeur par défaut, même le input file.

Je viens de tester l'astuce de fvsch et elle fonctionne très bien !
<input type="file" size="60" onfocus="javascript:this.value='';" />

@+
Modifié par Artemus24 (19 May 2012 - 05:08)
Modérateur
Bonjour Artemus,

Est-ce que tu prends le temps de lire réellement les messages des gens? Ça devient très agaçant. Je répète, pour la troisième et dernière fois, qu'il n'est pas question ici de trouver une solution technique pour celui qui crée le formulaire, mais bien pour celui qui l'utilise avec Firefox.

Je vais te donner un scénario clair et précis :

1. L'utilisateur arrive sur un site Internet où il y a un formulaire avec quelques champs textes à remplir ainsi qu'un input file facultatif.
2. Dans le formulaire, le concepteur n'a placé aucun bouton reset et aucun moyen pour remettre à zéro l'input file
3. L'utilisateur rempli tous les champs et sélectionne un fichier avec l'input file, mais il change d'avis. Il ne veut plus envoyer de fichier avec le reste de ses informations.

Par défaut, Firefox n'offre plus aucun moyen de vider l'input file sans vider tous les autres champs en même temps.

Si tu es incapable de comprendre la question posée, je t'inviterais sérieusement à t'abstenir de participer au sujet.

Merci et au plaisir de ne plus lire tes messages hors-sujets.
Bonjour Tony Monast,

excuse moi, mais j'ai très bien compris ton problème. Tu ne veux pas de solutions Javascript.
Mais toi non plus, tu ne lis pas les réponses que je poste.

Mais j'aimerai savoir pourquoi tu réagis aussi promptement à mes remarques ?

Sur ta remarque, je me pose deux questions :

1) comment un utilisateur peut-il remettre cette zone à vide, s'il ne connait pas l'astuce (manipulation du clavier) que la plupart des gens ne connaissent pas ?

2) sachant que cette astuce n'existe pas, pourquoi ne pas lui mettre une solution Javascript ?
A tant vouloir chercher une solution parfaite, n'arrives-tu pas à obtenir le contraire ?

Voici ce que je pense de ton approche :

comment veux-tu qu'un utilisateur puisse remettre une zone à zéro, si tu ne lui donne pas une solution à sa demande ? Tu crois que par un coup de baguette magique, il va solutionner son problème ? Tu crois que que le navigateur doit toujours répondre à tous les problèmes d'ergonomies que tu aurais oublier de résoudre ?

Non, désolé mais pour moi, il n'y a pas de bugs !
Simplement la règle du jeu à changé et tu ne sais pas d'adapter à ce changement.

De plus, si tu avais lu les commentaires concernant cette restriction, tu saurais que c'est pour palier à un défaut de sécurité. Et la solution de fvsch me convient parfaitement.

J'espère pour toi que tu n'es pas le genre de personnage, demandant de l'aide pour faire une omelette, mais se refuse à casser les œufs.

@+
Modifié par Artemus24 (21 May 2012 - 21:35)
Modérateur
Artemus24 a écrit :
Bonjour Tony Monast,

excuse moi, mais j'ai très bien compris ton problème. Tu ne veux pas de solutions Javascript.
Mais toi non plus, tu ne lis pas les réponses que je poste.

Mais j'aimerai savoir pourquoi tu réagis aussi promptement à mes remarques ?


Non, je t'assure que tu n'as rien compris du tout. Je réagis promptement, car tu me fais perdre un temps énorme avec tes hors sujets et ton entêtement à ne pas comprendre mon interrogation initiale. Tu restes fixé à proposer et commenter des solutions techniques, du code, alors que ma question n'a rien à voir avec ça.

Artemus24 a écrit :

Sur ta remarque, je me pose deux questions :

1) comment un utilisateur peut-il remettre cette zone à vide, s'il ne connait pas l'astuce (manipulation du clavier) que la plupart des gens ne connaissent pas ?

2) sachant que cette astuce n'existe pas, pourquoi ne pas lui mettre une solution Javascript ?
A tant vouloir chercher une solution parfaite, n'arrives-tu pas à obtenir le contraire ?

Voici ce que je pense de ton approche :

comment veux-tu qu'un utilisateur puisse remettre une zone à zéro, si tu ne lui donne pas une solution à sa demande ? Tu crois que par un coup de baguette magique, il va solutionner son problème ? Tu crois que que le navigateur doit toujours répondre à tous les problèmes d'ergonomies que tu aurais oublier de résoudre ?


1) Voilà. Je suis un utilisateur de Firefox qui cherchait une astuce (manipulation du clavier) pour remettre à zéro l'input file

2) Sachant que cette astuce n'existe pas, le sujet est clos. Je suis un utilisateur de Firefox, je ne suis pas le créateur de l'ensemble des formulaires qui existent sur le Web, alors je ne peux pas tous les améliorer avec une solution technique!

Est-ce que c'est plus clair pour toi maintenant? Surement pas! Je répète encore. Je ne cherche pas à pallier à un défaut du navigateur en tant que développeur/intégrateur. En tant qu'utilisateur de Firefox moi-même, je voulais vérifier s'il existait une astuce pour les formulaires que je rencontre sur les sites que je n'ai pas créé moi-même! Est-ce trop te demander que de comprendre ça?

Artemus24 a écrit :

Non, désolé mais pour moi, il n'y a pas de bugs !
Simplement la règle du jeu à changé et tu ne sais pas d'adapter à ce changement.


Si, c'est un bug. Il fait partie des rapports de bugs et les contributeurs de Firefox cherchent présentement la solution idéale.

Artemus24 a écrit :

De plus, si tu avais lu les commentaires concernant cette restriction, tu saurais que c'est pour palier à un défaut de sécurité.


J'étais au courant que c'était pour une question de sécurité. Il n'en demeure pas moins qu'il est tout à fait possible de pallier à ce problème tout en conservant la sécurité. Si tu avais aussi lu les commentaires du rapport de bug, tu aurais également noté quelques suggestions intéressantes qui sont à l'étude.

Artemus24 a écrit :

J'espère pour toi que tu n'es pas le genre de personnage, demandant de l'aide pour faire une omelette, mais se refuse à casser les œufs.


Toi par contre, tu es le genre de personnage à répondre à côté et à se demander après pourquoi les gens s'énervent. Tu n'as strictement rien compris à ma question. Je ferme ce sujet et je te demanderais à l'avenir de ne plus gâcher mes sujets. Je suis sérieux. Je ne veux plus perdre mon temps avec toi. Jamais! Smiley fache

Le sujet est clos
Modifié par Tony Monast (21 May 2012 - 23:37)