Загрузка файла JQuery не сбрасывается - PullRequest
0 голосов
/ 26 октября 2018

У меня есть решение для загрузки нескольких файлов, которое не очищает файлы после нажатия кнопки «Сброс». Просмотрите решение JSFIDDLE Demo . Вот HTML-код:

<form id="ImageUpload" action="#">
  <div class="field" align="left">
    <h2 class="page-header">Upload your images</h3>
      <div class="form-group">
        <div class="file-loading">
          <input type="file" id="files" name="files[]" multiple />
        </div>
      </div>
  </div>
  <hr />
  <div class="text-center">
    <button type="submit" name="Submit" class="btn btn-success">Submit</button>
    <button type="reset" name="Reset" class="btn btn-danger">Reset</button>
  </div>
</form>

Вот Javascript:

$(document).ready(function() {
  if (window.File && window.FileList && window.FileReader) {
    $("#files").on("change", function(e) {
      var files = e.target.files,
        filesLength = files.length;
      for (var i = 0; i < filesLength; i++) {
        var f = files[i]
        var fileReader = new FileReader();
        fileReader.onload = (function(e) {
          var file = e.target;
          $("<span class=\"pip\">" +
            "<img class=\"imageThumb\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
            "<br/><span class=\"remove\"><i class='fa fa-times'></i></span>" +
            "</span>").insertAfter("#files");
          $(".remove").click(function() {
            $(this).parent(".pip").remove();
          });
        });
        fileReader.readAsDataURL(f);
      }
    });
  } else {
    alert("Your browser doesn't support to File API")
  }
});

Желаемый результат - очистить не только количество выбранных файлов (кнопка «Выбрать файлы»), но и очистить изображения для предварительного просмотра.

Current solution doesn't clear the previewed selected files

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

enter image description here

Буду признателен за любую помощь, спасибо!

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вам необходимо добавить функцию для события нажатия кнопки «Сброс». Вот что вы можете сделать:

$(document).on('click', '[name=Reset]', function(){
   $('.pip').remove();
})
0 голосов
/ 26 октября 2018

Добавьте функцию к нажатию кнопки сброса.

$("button[name='Reset']").click(function() {
    var $input = $("#files");
    // Clear your input file value
    $input.replaceWith($input.val('').clone(true));
    // Then clear the preview of the images
    $('.pip').html('');
});
...