jQuery预览图像,并允许使用按钮删除图像

时间:2019-06-02 17:34:33

标签: jquery bootstrap-4

我想在选择图像后预览图像,并从生成的按钮中删除图像。

我试图在下面的代码中添加和删除。但是我一直在努力删除图像。

我认为问题出在这里

   $input.prev('.p-t').prev('.portimg').attr('src', '').hide();
    if (!prserveFileName) {
      $($input).parent().parent().parent().find('input.fileUpload').val("");
    }

function readURL() {
  var $input = $(this);
  var $newinput = $(this).parent().parent().parent().find('.portimg ');
  if (this.files && this.files[0]) {
    var reader = new FileReader();
    reader.onload = function(e) {
      reset($newinput.next('.delbtn'), true);
      $newinput.attr('src', e.target.result).show();

      $newinput.after('<p class="p-t"><a href="#" class="btn btn-danger delbtn removebtn" role="button">Remove</a></p>');
    }

    reader.readAsDataURL(this.files[0]);
  }
}
$(".fileUpload").change(readURL);
$("form").on('click', '.delbtn', function(e) {
  reset($(this));
});

function reset(elm, prserveFileName) {
  if (elm && elm.length > 0) {
    debugger;
    var $input = elm;
    $input.prev('.p-t').prev('.portimg').attr('src', '').hide();
    if (!prserveFileName) {
      $($input).parent().parent().parent().find('input.fileUpload').val("");
    }
    elm.remove();
  }
}
<!doctype html>
<html lang="en">

<head>
  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

  <title>Hello, world!</title>
</head>

<body>
  <h1>Hello, world!</h1>
  <div class="card-body">
    <form>
      <div class="form-group row">
        <label asp-for="Image" class="col-sm-2 col-form-label"></label>
        <div class="col-sm-10">

          <div class="input-group mb-3">
            <div class="input-group-prepend">
              <span class="input-group-text" id="inputGroupFileAddon01">Upload</span>
            </div>
            <div class="custom-file">
              <input type="file" class="fileUpload custom-file-input" id="inputGroupFile01" aria-describedby="inputGroupFileAddon01" accept="image/jpeg, image/jpg" name="profilepic">
              <label class="custom-file-label" for="profilepic">Choose file</label>
            </div>
          </div>
          <div class=upload-demo>
            <div class=upload-demo-wrap>
              <img src="https://via.placeholder.com/100X100" alt="..." class="portimg img-thumbnail">
            </div>
          </div>
        </div>
      </div>
    </form>
  </div>
  <!-- Optional JavaScript -->
  <!-- jQuery first, then Popper.js, then Bootstrap JS -->
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</body>

</html>
That’s all you need for overall page requirements. Visit the Layout docs or our official examples to start laying out your site’s content and components. Impo

如何删除图像并再次能够上传图像?

2 个答案:

答案 0 :(得分:1)

您需要添加名称,或者需要找到图像标签以进行重置,并像这样将文件输入值更改为null

javascript:

function reset(elm, prserveFileName) {
  if (elm && elm.length > 0) {

    var $input = elm;
    $input.prev('.p-t').prev('.portimg').attr('src', '').hide();
    if (!prserveFileName) {
      $($input).parent().parent().parent().find('input.fileUpload').val(null);
      $('img.portimg').attr("src", "https://via.placeholder.com/100X100")
    }
    elm.remove();
  }
}

答案 1 :(得分:1)

请检查我是否已编辑您的代码。我希望它对您有用。

function readURL() {
  var $input = $(this);
  var $newinput = $(this).parent().parent().parent().find('.portimg ');
  if (this.files && this.files[0]) {
    var reader = new FileReader();
    reader.onload = function(e) {
      reset($newinput.next('.delbtn'), true);
      $newinput.attr('src', e.target.result).show();

      $newinput.after('<p class="p-t"><a href="#" class="btn btn-danger delbtn removebtn" role="button">Remove</a></p>');
    }

    reader.readAsDataURL(this.files[0]);
  }
}
$(".fileUpload").change(readURL);
$("form").on('click', '.delbtn', function(e) {
  reset($(this));
});

function reset(elm, prserveFileName) {
  if (elm && elm.length > 0) {
    debugger;
    var $input = elm;
    $('.portimg').attr('src', 'https://via.placeholder.com/100X100');
    if (!prserveFileName) {
      $($input).parent().parent().parent().find('input.fileUpload').val("");
    }
    elm.parent().remove();
  }
}
<!doctype html>
<html lang="en">

<head>
  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

  <title>Hello, world!</title>
</head>

<body>
  <h1>Hello, world!</h1>
  <div class="card-body">
    <form>
      <div class="form-group row">
        <label asp-for="Image" class="col-sm-2 col-form-label"></label>
        <div class="col-sm-10">

          <div class="input-group mb-3">
            <div class="input-group-prepend">
              <span class="input-group-text" id="inputGroupFileAddon01">Upload</span>
            </div>
            <div class="custom-file">
              <input type="file" class="fileUpload custom-file-input" id="inputGroupFile01" aria-describedby="inputGroupFileAddon01" accept="image/jpeg, image/jpg" name="profilepic">
              <label class="custom-file-label" for="profilepic">Choose file</label>
            </div>
          </div>
          <div class=upload-demo>
            <div class=upload-demo-wrap>
              <img src="https://via.placeholder.com/100X100" alt="..." class="portimg img-thumbnail">
            </div>
          </div>
        </div>
      </div>
    </form>
  </div>
  <!-- Optional JavaScript -->
  <!-- jQuery first, then Popper.js, then Bootstrap JS -->
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</body>

</html>
That’s all you need for overall page requirements. Visit the Layout docs or our official examples to start laying out your site’s content and components. Impo