jQuery文件上传不重置

时间:2018-10-26 17:38:29

标签: javascript jquery file-upload twitter-bootstrap-3 jquery-file-upload

我有一个多文件上传解决方案,单击“重置”按钮后不会清除文件。查看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 :(得分:1)

向您的重置按钮单击添加功能。

$("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('');
});

答案 1 :(得分:1)

您需要为“重置”按钮单击事件添加功能。这是您可以做的:

$(document).on('click', '[name=Reset]', function(){
   $('.pip').remove();
})