Desejo alterar o texto padrão no botão " Choose File
" quando usarmos input="file"
.
Como posso fazer isso? Além disso, como você pode ver na imagem, o botão está no lado esquerdo do texto. Como posso colocá-lo no lado direito do texto?
html
file
input
default-value
Harry Joy
fonte
fonte
Respostas:
Cada navegador possui sua própria versão do controle e, como tal, você não pode alterar o texto ou a orientação do controle.
Existem alguns "tipos de" hacks que você pode querer experimentar se quiser um html/css solução em vez de um Flash ou luz cinzasolução.
http://www.quirksmode.org/dom/inputfile.html
http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom
Pessoalmente, como a maioria dos usuários segue o navegador de sua escolha e, portanto, provavelmente está acostumada a ver o controle na versão padrão, provavelmente ficaria confusa se visse algo diferente (dependendo dos tipos de usuários com os quais você está lidando) .
fonte
Use o
Abaixo está o código para buscar o nome do arquivo enviado"for"
atributo delabel
parainput
.fonte
display:none
pode ser usado no INPUT para não usar o espaço não necessário.Eu acho que é isso que você quer:
fonte
Isso pode ajudar alguém no futuro, você pode estilizar o rótulo da entrada conforme desejar e colocar o que quiser dentro dela e ocultar a entrada com nenhuma exibição.
Funciona perfeitamente em cordova com iOS
fonte
Não é possível. Caso contrário, pode ser necessário usar o controle de upload do Silverlight ou Flash.
fonte
Aqui, como você pode fazer isso:
jQuery:
css
Código HTML:
fonte
Este ainda é o melhor até agora
fonte
Usando o Bootstrap, você pode fazer isso como o código abaixo.
fonte
Criei um script e publiquei no GitHub: get selectFile.js Fácil de usar, fique à vontade para clonar.
HTML
JS
DEMO
jsfiddle.net/Thielicious/4oxmsy49/
fonte
Atualização 2017:
Eu fiz pesquisas sobre como isso poderia ser alcançado. E a melhor explicação / tutorial está aqui: https://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/
Escreverei o resumo aqui, caso fique indisponível. Então você deve ter HTML:
Em seguida, oculte a entrada com CSS:
Em seguida, estilize o rótulo:
Em seguida, opcionalmente, você pode adicionar JS para exibir o nome do arquivo:
Mas, na verdade, basta ler o tutorial e baixar a demo, é muito bom.
fonte
Eu usaria um
button
para acionar oinput
:Rápido e limpo.
fonte
Você pode usar essa abordagem, ela funciona mesmo que muitas entradas de arquivos.
fonte
Isso deve funcionar:
fonte
Aqui está como é feito o bootstrap, apenas você deve colocar a entrada original em algum lugar ... idk na cabeça e excluir o <br> se você o tiver, porque ele está apenas oculto e está ocupando espaço de qualquer maneira :)
fonte
Deixe-me adicionar um hack que eu usei. Queria ter uma seção que permitisse arrastar e soltar arquivos, e que a seção de arrastar e soltar fosse clicável junto com o botão de upload original.
Aqui está como era quando eu terminei (menos a capacidade de arrastar e soltar, há muitos tutoriais sobre como fazer isso).
E então eu criei uma série de postagens de blog principalmente sobre botões de upload de arquivos.
fonte
Ok, maneira css pura e simples de criar seu arquivo de entrada personalizado.
Use etiquetas, mas como você sabe das respostas anteriores, a etiqueta não invoca a função onclick no firefox, pode ser um bug, mas não importa com o seguinte.
O que você faz é estilizar o rótulo para ter a aparência desejada.
Agora, basta ocultar o botão de entrada real, mas você não pode configurá-lo para
visability: hidden
Então, torne invisível definindo
opacity: 0;
Agora, como você deve ter notado, eu tenho a mesma classe no meu rótulo e no meu campo de entrada, é porque eu quero que os dois tenham o mesmo estilo, portanto, sempre que você clicar no rótulo, você estará realmente clicando no invisível campo de entrada.
fonte
Minha solução ...
HTML:
Jquery:
Isso é apenas o mal: D
fonte
fonte