2010-08-20 17 views
103

Diciamo che abbiamo di questo codice:HTML <input type = 'file'> Selezione File Evento

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

che si traduce in questo:

image showing browse and upload button

Quando l'utente fa clic sul 'Sfoglia ... pulsante', una finestra di dialogo di ricerca file viene aperto:

image showing a file search dialog box with a file selected

L'utente seleziona il file facendo doppio clic sul file o facendo clic sul pulsante "Apri".

Esiste un evento Javascript che posso utilizzare per ricevere una notifica dopo la selezione del file?

risposta

129

Ascolta l'evento di modifica.

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

lo scriveremo dove .. nei tag script javascript – Moon

+4

sì nei tag di script, oppure potresti aggiungerlo come un attributo ('') sebbene questo sia non consigliato. – Anurag

+6

Si noti che in IE7 e 8 che l'evento "change" non diventa un evento form. Devi mettere il tuo listener sul tag . – xer0x

26

Quando è necessario ricaricare il file, è possibile cancellare il valore di input. La prossima volta che aggiungi un file, verrà attivato l'evento 'on change'. modo

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

Che funziona bene, ma fai attenzione a strani comportamenti di IE <11. Non ti consente di modificare il valore di input, quindi molto probabilmente avrai bisogno di una soluzione alternativa. http://stackoverflow.com/questions/9011644/how-to-reset-clear-file-input –

6

jQuery:

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

    // your code 
}); 
0

L'evento Change viene chiamato anche se si fa clic su annullare ..

+2

sarebbe di aiuto se fornissi del codice per spiegare la tua risposta, poiché non vi è alcun evento di cambiamento menzionato nel codice Domande frammento – DevDig

1

Questo è il modo in cui l'ho fatto con JS puri:

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>

Problemi correlati