Este código deveria funcionar no IE (nem mesmo teste no Firefox), mas não funciona. O que eu quero é exibir o nome do arquivo anexado. Qualquer ajuda?
<html>
<head>
<title>example</title>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript">
$(document).ready( function(){
$("#attach").after("<input id='fakeAttach' type='button' value='attach a file' />");
$("#fakeAttach").click(function() {
$("#attach").click();
$("#maxSize").after("<div id='temporary'><span id='attachedFile'></span><input id='remove' type='button' value='remove' /></div>");
$('#attach').change(function(){
$("#fakeAttach").attr("disabled","disabled");
$("#attachedFile").html($(this).val());
});
$("#remove").click(function(e){
e.preventDefault();
$("#attach").replaceWith($("#attach").clone());
$("#fakeAttach").attr("disabled","");
$("#temporary").remove();
});
})
});
</script>
</head>
<body>
<input id="attach" type="file" /><span id="maxSize">(less than 1MB)</span>
</body>
</html>
Respostas:
É tão simples quanto escrever:
De qualquer forma, sugiro usar o atributo de nome ou ID para selecionar sua entrada. E com o evento, deve ser assim:
fonte
A maneira mais simples é simplesmente usar a seguinte linha de
jquery
, usando isso você não entende o/fakepath
absurdo, você obtém diretamente o arquivo que foi carregado:Alguns outros comandos úteis são:
Para obter o nome do arquivo:
Para obter o tipo do arquivo:
Se eu fosse fazer upload de um PNG, ele retornaria
image/png
Para obter o tamanho (em bytes) do arquivo:
Além disso, você não precisa usar esses comandos
on('change'
, você pode obter os valores a qualquer momento, por exemplo, você pode ter um upload de arquivo e quando o usuário clicaupload
, você simplesmente usa os comandos que listei.fonte
Este código não aparecerá
C:\fakepath\
antes do nome do arquivo no Google Chrome em caso de uso.val()
.fonte
fonte
Eu usei o seguinte que funcionou corretamente.
fonte
fonte
Adicionar um botão de redefinição oculto:
Clique no botão reset para limpar a entrada.
fonte
fonte