2010-08-20 31 views
103

Digamos que tenemos este código:HTML <input type = 'archivo'> Selección archivo de eventos

<form action='' method='POST' enctype='multipart/form-data'> 
    <input type='file' name='userFile'><br> 
    <input type='submit' name='upload_btn' value='upload'> 
</form> 

que se traduce en lo siguiente:

image showing browse and upload button

Cuando el usuario hace clic en 'Browse botón ...', se abre un cuadro de diálogo de búsqueda de archivos:

image showing a file search dialog box with a file selected

El usuario seleccionará el archivo haciendo doble clic en el archivo o haciendo clic en el botón 'Abrir'.

¿Existe un evento Javascript que pueda utilizarse para recibir una notificación después de que se haya seleccionado el archivo?

Respuesta

129

Escuche el evento de cambio.

input.onchange = function(e) { 
    .. 
}; 
+2

lo escribiremos donde ... en las etiquetas de script javascript – Moon

+4

sí en las etiquetas de script, o puede agregarlo como un atributo ('') aunque esto es no recomendado. – Anurag

+6

Tenga en cuenta que en IE7 y 8 que el evento 'cambio' no burbujea hasta el evento de formulario. Necesita poner su oyente en la etiqueta . – xer0x

26

Cuando tenga que volver a cargar el archivo, puede borrar el valor de la entrada. La próxima vez que agregue un archivo, se activará el evento "al cambiar".

document.getElementById('my_input').value = null; 
//^that just erase the file path but do the trick 
+2

Eso funciona bien, pero tenga en cuenta el extraño comportamiento IE <11. No le permite cambiar el valor de la entrada, por lo que es muy probable que necesite una solución alternativa. http://stackoverflow.com/questions/9011644/how-to-reset-clear-file-input –

6

jQuery manera:

$('input[name=myInputName]').change(function(ev) { 

    // your code 
}); 
0

El evento Change se llama incluso si hace clic en cancelar ..

+2

sería útil proporcionar algún código para explicar su respuesta, ya que no hay ningún evento de cambio mencionado en el código de Preguntas retazo – DevDig

1

Esa es la manera que lo hice con JS puros:

var files = document.getElementById('filePoster'); 
 
var submit = document.getElementById('submitFiles'); 
 
var warning = document.getElementById('warning'); 
 
files.addEventListener("change", function() { 
 
    if (files.files.length > 10) { 
 
    submit.disabled = true; 
 
    warning.classList += "warn" 
 
    return; 
 
    } 
 
    submit.disabled = false; 
 
});
#warning { 
 
    text-align: center; 
 
} 
 

 
#warning.warn { 
 
\t color: red; 
 
\t transform: scale(1.5); 
 
\t transition: 1s all; 
 
}
<section id="shortcode-5" class="shortcode-5 pb-50"> 
 
    <p id="warning">Please do not upload more than 10 images at once.</p> 
 
    <form class="imagePoster" enctype="multipart/form-data" action="/gallery/imagePoster" method="post"> 
 
     <div class="input-group"> 
 
    \t  <input id="filePoster" type="file" class="form-control" name="photo" required="required" multiple="multiple" /> 
 
\t  <button id="submitFiles" class="btn btn-primary" type="submit" name="button">Submit</button> 
 
     </div> 
 
    </form> 
 
</section>

Cuestiones relacionadas