HTMLСобытие выбора файла - PullRequest
       4

HTMLСобытие выбора файла

123 голосов
/ 20 августа 2010

Допустим, у нас есть этот код:

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

, что приводит к этому:

image showing browse and upload button

Когда пользователь нажимает кнопку «Обзор ...», открывается диалоговое окно поиска файла:

image showing a file search dialog box with a file selected

Пользователь выберет файл, дважды щелкнув файл или нажав кнопку «Открыть».

Есть ли событие Javascript, которое я могу использовать, чтобы получать уведомления после выбора файла?

Ответы [ 5 ]

157 голосов
/ 20 августа 2010

Прослушивание события изменения.

input.onchange = function(e) { 
  ..
};
37 голосов
/ 02 февраля 2015

Когда вам нужно перезагрузить файл, вы можете стереть значение ввода. В следующий раз, когда вы добавите файл, сработает событие «при изменении».

document.getElementById('my_input').value = null;
// ^ that just erase the file path but do the trick
11 голосов
/ 13 февраля 2016

JQuery способ:

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

    // your code
});
2 голосов
/ 02 января 2018

Вот как я это сделал с чистым 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 {
	color: red;
	transform: scale(1.5);
	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">
  	    <input id="filePoster" type="file" class="form-control" name="photo" required="required" multiple="multiple" />
	    <button id="submitFiles" class="btn btn-primary" type="submit" name="button">Submit</button>
        </div>
    </form>
</section>
1 голос
/ 26 января 2017

Событие Change вызывается, даже если вы нажмете «Отмена».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...