2010-08-20 4 views
103

Disons que nous avons ce code:HTML <input type = 'file'> Sélection du fichier de l'événement

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

qui se traduit par ceci:

image showing browse and upload button

Lorsque l'utilisateur clique sur le « Parcourir ... » bouton, une boîte de dialogue de recherche de fichier est ouvert:

image showing a file search dialog box with a file selected

L'utilisateur sélectionnera le fichier en double-cliquant sur le fichier ou en cliquant sur le bouton 'Ouvrir'.

Y at-il un événement Javascript que je peux utiliser pour être averti après la sélection du fichier?

Répondre

129

Écouter l'événement change.

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

nous allons l'écrire où .. dans les balises de script javascript – Moon

+4

oui dans les balises de script, ou vous pouvez l'ajouter comme un attribut ('') bien que ce soit non recommandé. – Anurag

+6

Notez que dans IE7 et 8, l'événement 'change' n'apparaît pas dans l'événement de formulaire. Vous devez placer votre écouteur sur la balise . – xer0x

26

Lorsque vous devez recharger le fichier, vous pouvez effacer la valeur de l'entrée. La prochaine fois que vous ajouterez un fichier, l'événement 'on change' se déclenchera.

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

Cela fonctionne bien, mais soyez conscient du comportement étrange d'IE <11. Cela ne vous permet pas de modifier la valeur d'une entrée, donc vous aurez probablement besoin d'une solution de contournement. http://stackoverflow.com/questions/9011644/how-to-reset-clear-file-input –

6

façon jQuery:

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

    // your code 
}); 
0

L'événement change est appelé, même si vous cliquez sur Annuler ..

+2

Il serait utile que vous fournissiez du code pour expliquer votre réponse, car il n'y a pas d'événement de changement mentionné dans le code Questions fragment – DevDig

1

C'est la façon dont je l'ai fait avec pur JS:

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>

Questions connexes