CLEAR D'UN INPUT FILE

Messages postés
631
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
- - Dernière réponse : cs_balou91
Messages postés
1
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
22 avril 2009
- 22 avril 2009 à 15:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48294-clear-d-un-input-file

cs_balou91
Messages postés
1
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
22 avril 2009
-
bonjour,

j'ai testé la solution "innerHTML" proposée par LGH et c'est de loin la plus simple à mettre en oeuvre. La solution initiale ne fonctionnait pas dans mon script ( les champs input type "file" étaient crées pas un script PHP ).
- on a donc en javascript une fonction de reset du champ :
function rstfile(num){
contenu="fichier :";
contenu=contenu+"[[javascript: rstfile(1) annuler]]

[[javascript: rstfile(2) annuler]]

[[javascript: rstfile(3) annuler]]

et 'oilà ! je trouve ça plus simple et plus efficace
PetoleTeam
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
11 -
Bonjour,
pas sur d'avoir tout compris...
La solution d'XtremDuke restant à mon goût toujours la meilleure.
;O)
cs_lgh
Messages postés
41
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 avril 2009
-
Bonjour à tous,
J'ai déjà plancher sur le problème et j'ai deux solutions à proposées:
IE:
l'adresse contenu dans l'input est utilisée par une fonction attribuée à l'événement "onchange". L'input de type file possédant un nom et/ou un Id, il suffit de finir la fonction de la façon suivante:
file.focus();
file.select();
document.execCommand('delete');
Tous navigateur:
Placez l'input de type file dans un bloc de type span ou div et de même; à la fin de la fonction attribuée à l'évènement "onchange" écrire:
document.getElementById('span' ou div).inner HTML = "";
et le tour est joué.
Salut,
PetoleTeam
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
11 -
-> LeFauve42
...quick and dirty pas sur...
de passer par innerHTML n'est pas aussi simple que cela car il te faut au préalable récupérer les attributs pour en faire une vrai copie.
Ceci m'améne à dire

-> nickadele
selon mes test, la class et tous les attributs sont clonés même les plus olé olé...
mon souhait était bien, comme toujours, de s'affranchir des caprices des différents browsers

-> XtremDuke
mais pourquoi n'ai je pas poussé mon raisonnement jusqu'au bout et utilisé la méthode reset des FORMs,
juste une chose je passerai l'ID de l'imput en paramètre et non l'objet lui même.

-> LeFauve42
cela ne marche pas car dans ce cas l'input est ajouté à la fin, ce qui n'est pas le but recherché.

CONCLUSION
La vrai seule solution élégante et rapide est celle de XtremDuke.
Créer un fonction et passez la au XtremDuke_ZIPPEUR et vous verrez le résultat...
encore bravo...
XtremDuke
Messages postés
631
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3 -
@nickadele :

Dans des applis locales, ça m'est déjà arrivé de m'intéresser uniquement à la valeur du champ afin qu'il soit traité par HttpRequest et non au fichier auquel il pointe. Maintenant, et je te l'accorde, c'est un cas assez rare.