【问题标题】:Javascript - How to delete selected picture?Javascript - 如何删除选定的图片?
【发布时间】:2020-05-14 16:32:19
【问题描述】:

这是代码,所以这里是多个预览图像的代码。所以我想删除选定的图像?所以当你上传图片时,你点击图片,图片消失了,但它只是隐藏而不是删除?

我该如何解决这个问题?因为我正在使用.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> 

【问题讨论】:

  • .remove() 似乎工作正常。我在 jsfiddle 上测试了你的代码,只做了很少的改动,它会一直删除(不仅仅是隐藏它)
  • @Kalimah 我编辑了我的帖子,你现在有截图了。这是点击图片后的截图,所以图片是隐藏的,我还有个jpg文件,应该删掉吧?
  • 您的意思是图像 name 仍然存在,而不是默认的“未选择文件”?
  • @Kalimah 是的,它仍然被选中
  • @Kalimah 怎么办?

标签: javascript html jquery preview


【解决方案1】:

你需要重新设置输入值:

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

【讨论】:

  • 我再次编辑了帖子。看截图,当我选择多张图片时,我想删除其中一张,我点击了,第二张图片还在,但我这里没有选择文件,因为所有图片都完全重置
  • 因为它不起作用。实际上它正在工作,但不是我问的......
  • 这不是投反对票的原因。至少提供一个我可以检查的活生生的例子。
  • 我怎样才能给你一个活生生的例子?我给了你所有的代码,接下来我需要做什么?
  • 要么指向托管代码的站点,要么使用jsfiddle.net 显示示例并在此处提供链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多