45 votes

Comment renommer le bouton HTML "Parcourir" d'un input de type fichier ?

Comment renommer le bouton de navigation en "Sélectionner le fichier"? Par exemple:

1 votes

32voto

Payam Shoeibi Points 141
function HandleBrowseClick()
{
    var fileinput = document.getElementById("browse");
    fileinput.click();
}
function Handlechange()
{
var fileinput = document.getElementById("browse");
var textinput = document.getElementById("filename");
textinput.value = fileinput.value;
}

http://jsfiddle.net/J8ekg/

1 votes

J'ai utilisé cette approche et je me sens vraiment à l'aise avec elle. Mais il y a une chose principale à changer : si vous appliquez display: none à cette entrée, le clic ne fonctionne pas, il vaut donc mieux utiliser opacity: 0;. Merci!!!

0 votes

Opcaity n'est pas pris en charge par les navigateurs plus anciens, donc faites attention à cela.

0 votes

Je me demande maintenant ce qui se passerait si je voulais envoyer une autre variable, appelons-la group_id. Comment devrais-je l'envoyer ? dans le HTML mais dans le script ?

24voto

Chuck Points 138930

Le bouton n'est pas appelé le "bouton de navigation" - c'est juste le nom que votre navigateur lui donne. Les navigateurs sont libres d'implémenter le contrôle de téléchargement de fichiers comme ils le souhaitent. Dans Safari, par exemple, il est appelé "Choisir un fichier" et il est situé de l'autre côté de ce que vous utilisez probablement.

Vous pouvez personnaliser l'apparence du contrôle de téléchargement en utilisant la technique décrite sur QuirksMode, mais cela va au-delà de simplement changer le texte du bouton.

7voto

korona Points 1231

Un peu de JavaScript s'en chargera :

function HandleBrowseClick()
{
    var fileinput = document.getElementById("browse");
    fileinput.click();
    var textinput = document.getElementById("filename");
    textinput.value = fileinput.value;
}

Ce n'est peut-être pas la solution la plus esthétique, mais ça marche.

0 votes

Cela sera totalement inutilisable si JS n'est pas disponible. (Le HTML est également invalide).

0 votes

@David Dorwad: Merci d'avoir souligné l'évidence (que JS ne fonctionne pas lorsque JS n'est pas disponible). Le cas réel où cela se produirait est extrêmement rare cependant. De plus, je n'avais pas l'intention que quiconque copie et colle aveuglément ceci et l'utilise immédiatement, c'était destiné comme un pointeur pour montrer une façon possible d'atteindre l'objectif en question. Mais bon, merci de me dissuader de poster à nouveau.

0 votes

Le point, c'est que le HTML ne fonctionne pas si le JS n'est pas disponible. Une solution bien écrite se dégraderait de manière élégante et ne reviendrait pas à une position où il y avait un bouton qui ne faisait rien.

2voto

FWH Points 2043

Le champ d'entrée de type "file" est très délicat car il se comporte différemment sur chaque navigateur, il ne peut pas être stylisé, ou peut être stylisé un peu, en fonction du navigateur encore une fois; et il est difficile à redimensionner (en fonction du navigateur encore une fois, il peut avoir une taille minimale qui ne peut pas être modifiée).

Il existe cependant des solutions de contournement. Le meilleur, à mon avis, est celui-ci (le résultat est ici).

0voto

Canavar Points 29161

Non, vous ne pouvez pas changer le texte de l'entrée de téléchargement de fichier. Mais il existe quelques astuces pour superposer une image sur le bouton.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X