SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
19.02.2025

Limpando o Campo de Entrada de Arquivos em HTML com JavaScript

Resposta Rápida

A forma mais simples de limpar um campo de entrada de arquivos em JavaScript é atribuir uma string vazia à propriedade value: fileInput.value = ''. Este método funciona de maneira efetiva na maioria dos navegadores modernos. Se você precisar dar suporte a versões mais antigas dos navegadores, deve substituir o elemento por uma cópia:

let fileInput = document.getElementById('seuIdDeEntradaDeArquivo');
fileInput.value = ''; // Isso limpa o campo de entrada de arquivo

// Para navegadores mais antigos, é necessário um reset completo:
if (fileInput.value) {
    let clone = fileInput.cloneNode(); // Cria uma cópia do elemento
    fileInput.parentNode.replaceChild(clone, fileInput); // Substitui o elemento pela cópia
}

Como alternativa, você também pode atribuir null à propriedade value:

fileInput.value = null; // Null pode ser usado para limpar o campo

Métodos Universais para Limpar Campos de Entrada de Arquivos

Como Limpar um Campo de Entrada de Arquivos Sem Afetar Outros Elementos do Formulário

Se você precisa especificamente limpar o campo de entrada de arquivos sem interferir em outros elementos do formulário, pode substituir o elemento de entrada atual por um novo:

let fileInput = document.getElementById('seuIdDeEntradaDeArquivo');
let newInput = document.createElement('input');
newInput.type = 'file'; // Cria um novo elemento de entrada do tipo 'file'
fileInput.parentNode.replaceChild(newInput, fileInput);

Preservando Manipuladores de Eventos e Atributos

Ao substituir o campo de entrada de arquivo, você pode querer preservar os manipuladores de eventos e atributos. Nesse caso, crie uma cópia do elemento e redefina o value no novo elemento:

let fileInput = document.getElementById('seuIdDeEntradaDeArquivo');
let newInput = fileInput.cloneNode(); // Cria uma cópia do elemento
newInput.value = '';
fileInput.parentNode.replaceChild(newInput, fileInput);

Lidando com Inconsistências entre Navegadores

Os navegadores podem se comportar de forma imprevisível, então você pode querer usar um bloco try-catch para lidar com exceções:

try {
    fileInput.value = ''; // Tentativa normal de limpar o campo em navegadores mais novos
    if (fileInput.value) throw new Error('Falha ao limpar o campo de entrada de arquivo');
} catch (e) {
    let newInput = fileInput.cloneNode(); // Cria uma cópia do elemento em caso de erro
    fileInput.parentNode.replaceChild(newInput, fileInput);
}

Visualização

Imagine que o campo de entrada de arquivo é um patinete (🛵) que carrega um copo de café (☕) — que é o arquivo.

Antes: 🛵💨 com um copo de ☕

Agora você terminou seu café, e o copo vazio precisa ser descartado:

document.getElementById('fileInput').value = ''; // Adeus, copo! ☕👋

E o que resta é:

Depois: 🛵💨 sem ☕

O patinete está pronto para uma nova viagem ao Starbucks!

Notas Adicionais e Métodos Alternativos

Limpando o Campo de Entrada de Arquivos via AJAX sem Resetar o Formulário

Para remover dados de arquivos sem recarregar a página ou resetar o formulário, você pode usar uma requisição AJAX:

let fileInput = document.getElementById('seuIdDeEntradaDeArquivo');
let formData = new FormData();
formData.append('file', fileInput.files[0]);

// Enviar dados via AJAX (por exemplo, usando Fetch API)
fetch('seu-endpoint-do-servidor', {
    method: 'POST',
    body: formData
}).then(() => {
    fileInput.value = ''; // Após submissão bem-sucedida, limpa o campo
}).catch((error) => {
    console.error('Erro:', error);
});

Dicas para Usuários do Internet Explorer 11 e Versões Anteriores

Para IE11 e versões anteriores, certifique-se de que os métodos que você está utilizando não estejam obsoletos e ainda funcionem corretamente.

jQuery

Para desenvolvedores acostumados com jQuery, a seguinte solução pode funcionar: envolva o elemento em um formulário, redefina o formulário e depois remova o envoltório:

$('#seuIdDeEntradaDeArquivo').wrap('<form>').closest('form').get(0).reset();
$('#seuIdDeEntradaDeArquivo').unwrap(); // Forma rápida e fácil de limpar o campo de entrada de arquivo

Testar é Fundamental para Confiabilidade

Teste minuciosamente sua solução em diversos ambientes e navegadores para garantir sua confiabilidade. Lembre-se das especificidades ao trabalhar com campos de entrada de arquivos em JavaScript.

Recursos Úteis

  1. javascript - Limpando <input type='file'/> com jQuery - Stack Overflow — Discussão sobre métodos jQuery para limpar o campo de entrada de arquivo.
  2. .val() | Documentação da API jQueryDocumentação oficial do jQuery sobre o método .val(), usado para limpar valores.
  3. Padrão HTML — Informações sobre o atributo value do elemento <input> de acordo com a especificação HTML.
  4. Tutorial no YouTube - Limpando o Campo de Entrada de Arquivo em JavaScript — Guia em vídeo sobre como limpar o campo de entrada de arquivo.
  5. Gists abertos · GitHub — Um recurso com exemplos de código no GitHub Gist, incluindo exemplos para limpar campos de entrada de arquivos.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!