Let's say we have this code:
<form action='' method='POST' enctype='multipart/form-data'>
<input type='file' name='userFile'><br>
<input type='submit' name='upload_btn' value='upload'>
</form>
which results in this:
https://i.stack.imgur.com/bT2hc.png
When the user clicks the 'Browse...' button, a file search dialog box is opened:
https://i.stack.imgur.com/Y10eN.png
The user will select the file either by double-clicking the file or by clicking the 'Open' button .
Is there a Javascript Event that I can use to be notified after after the file is selected?
Listen to the change event.
input.onchange = function(e) {
..
};
When you have to reload the file, you can erase the value of input. Next time you add a file, 'on change' event will trigger.
document.getElementById('my_input').value = null;
// ^ that just erase the file path but do the trick
jQuery way:
$('input[name=myInputName]').change(function(ev) {
// your code
});
That's the way I did it with pure 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;
}
warning.classList -= "warn";
submit.disabled = false;
}); #warning {
text-align: center;
transition: 1s all;
}
#warning.warn {
color: red;
transform: scale(1.5);
} Please do not upload more than 10 images at once.
The Change event gets called even if you click on cancel..
Though it is an old question, it is still a valid one.
Expected behavior:
Show selected file name after upload.
Do not do anything if the user clicks Cancel.
Show the file name even when the user selects the same file.
Code with a demonstration:
Explanation:
The onchange event handler is used to handle any change in file selection event.
The onchange event is triggered only when the value of an element is changed. So, when we select the same file using the input field the event will not be triggered. To overcome this, I set this.value = null; at the end of the onchange event function. It sets the file path of the selected file to null. Thus, the onchange event is triggered even at the time of the same file selection.
Success story sharing
<input type="file" onchange="..." />
) although this is not recommended.