Eu tenho um formulário como
<form onSubmit="return disableForm(this);" action="upload.php" method="post" name="f" id="wizecho" enctype="multipart/form-data">
<input type="file" name="file" />
<button onClick="return disableForm(this),ajaxUpload(this.form,'wizecho_upload.php', '<br>Uploading image please wait.....<br>'); return false;">
Upload Image
</button>
</form>
É para fazer upload de uma imagem.
Aqui preciso clicar no botão para fazer o upload da imagem e usar o onClick
evento. Quero remover o botão de upload e assim que o arquivo for selecionado na entrada, quero disparar o evento. Como faço isso??
javascript
jquery
ptamzz
fonte
fonte
Respostas:
Use o evento de mudança na entrada do arquivo.
fonte
Você pode se inscrever para o evento onchange no campo de entrada:
e depois:
fonte
Esta é uma pergunta mais antiga que precisa de uma resposta mais recente que abordará a preocupação de @Christopher Thomas acima nos comentários da resposta de aceitação. Se você não navegar para fora da página e selecionar o arquivo uma segunda vez, será necessário limpar o valor ao clicar ou fazer um touchstart (para celular). O seguinte funcionará mesmo quando você navegar para fora da página e usar jquery:
fonte
val('')
, o que não funciona na maioria dos navegadores.element.setAttribute("value", "")
Se você não estiver usando jQuery, você precisa usarelement.value = ""
para fazer com que o elemento de arquivo seja realmente limpo de maneira adequada.Faça o que quiser depois que o arquivo for carregado com sucesso. Logo após a conclusão do processamento do arquivo, defina o valor do controle de arquivo como string em branco. Portanto, o .change () sempre será chamado, mesmo que o nome do arquivo seja alterado ou não. como por exemplo você pode fazer isso e funcionou para mim como um charme
fonte
Solução para usuários vue, resolvendo o problema quando você carrega o mesmo arquivo várias vezes e o evento @change não é acionado:
fonte
<input type = "file" @ change = "onFileChange" class = "input upload-input" ref = "inputFile" />
fonte