Javascript-如何删除所选图片?

问题描述 投票:2回答:1

这是代码,所以这里是用于多个预览图像的代码。所以我要删除所选的图像?因此,当您上传图片时,您点击图片,图片消失了,但是它只是隐藏而不删除了吗?

我该如何解决?因为我使用的是.remove();方法,但没有任何反应,所以它只是隐藏的图像

    $("#files").on("change", handleFileSelect);
    selDiv = $("#selectedFiles");
    $("#myForm").on("submit", handleForm);
    $("body").on("click", ".selFile", removeFile);
  });

  var selDiv = "";
  var storedFiles = [];
  function handleFileSelect(e) {
    var files = e.target.files;
    var filesArr = Array.prototype.slice.call(files);
    var device = $(e.target).data("device");
    filesArr.forEach(function(f) {

      if (!f.type.match("image.*")) {
        return;
      }
      storedFiles.push(f);

      var reader = new FileReader();
      reader.onload = function(e) {
        var html = "<div><img src=\"" + e.target.result + "\" data-file='" + f.name + "' class='selFile' title='Click to remove'>" + f.name + "<br clear=\"left\"/></div>";
        $("#selectedFiles").append(html);
      }
      reader.readAsDataURL(f);
    });

  }

  function handleForm(e) {
    e.preventDefault();
    var data = new FormData();

    for (var i = 0, len = storedFiles.length; i < len; i++) {
      data.append('files', storedFiles[i]);
    }

    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'handler.cfm', true);

    xhr.onload = function(e) {
      if (this.status == 200) {
        console.log(e.currentTarget.responseText);
        alert(e.currentTarget.responseText + ' items uploaded.');
      }
    }

    xhr.send(data);
  }

  function removeFile(e) {
    var file = $(this).data("file");
    for (var i = 0; i < storedFiles.length; i++) {
      if (storedFiles[i].name === file) {
        storedFiles.splice(i, 1);
        break;
      }
    }
    $(this).parent().remove();
  }

这是我的简单HTML

<script src="aa.js"></script>
<form id="myForm">
  <input type="file" id="files" name="files" multiple>
  <div id="selectedFiles"></div>
  <br/>
  <input type="submit">
</form> 

enter image description here

enter image description here

javascript html jquery preview
1个回答
0
投票

您需要重置输入值:

 function removeFile(e) {
    var file = $(this).data("file");
    for (var i = 0; i < storedFiles.length; i++) {
      if (storedFiles[i].name === file) {
        storedFiles.splice(i, 1);
        break;
      }
    }
    $(this).parent().remove();

  // add it here
   jQuery("#files").val("");
  }
© www.soinside.com 2019 - 2024. All rights reserved.