Search code examples
jquerygoogle-chromefile-uploadjasny-bootstrap

Cancelling the File input dialog, flushes the earlier selected file in Jasny Bootstrap file input


   
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"/>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/css/jasny-bootstrap.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/js/jasny-bootstrap.js"></script>

<div class="fileinput fileinput-new" data-provides="fileinput">
  <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">
    <img src="https://placeholdit.imgix.net/~text?txtsize=19&txt=200%C3%97200&w=200&h=200" alt="...">
  </div>
  <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"></div>
  <div>
    <span class="btn btn-default btn-file"><span class="fileinput-new">Select image</span><span class="fileinput-exists">Change</span>
    <input type="file" name="...">
    </span>
    <a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
  </div>
</div>

I'm using jasny bootstrap file input image upload widget. Here's the link jasny bootstrap file input & this is my jsfiddle for image upload widget

Steps:

  1. Select any file
  2. Click on 'Change'
  3. In the dialog box, click 'Cancel'

Description:

Suppose i am selecting File1 as input, now i want to change it, so i click on Change button. The dialog box will appear, now i change my mind and want to stick with File1, so i click Cancel. Now if you will see File1 is deselected.

Expected Result:

Even after Cancelling the process, i should be able to see File1 as Selected in my File Input.


I know that this is the default behaviour of google chrome file input but if you see Single Image Upload on Angular HTML5 file upload - single image upload

you'll find that it is preserving the File1 as selected.


Solution

  • var file1 = $('#file1').val()
    
    $('#file-upload').on('change.bs.fileinput', function(e, file) {
      //console.log(e)
      $('#file1').val(file1)
    });
    
    
    $('#file-upload').on('clear.bs.fileinput', function(e, file) {
      //console.log(e)
      $('#file1').val(file1)
    });
    <link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"/>
     <link href="https://cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/css/jasny-bootstrap.css" rel="stylesheet"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/js/jasny-bootstrap.js"></script>
    <div id="file-upload">
    <div class="fileinput fileinput-new" data-provides="fileinput">
      <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">
        <img src="https://placeholdit.imgix.net/~text?txtsize=19&txt=200%C3%97200&w=200&h=200" alt="...">
      </div>
      <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"></div>
      <div>
        <span class="btn btn-default btn-file"><span class="fileinput-new">Select image</span><span class="fileinput-exists">Change</span>
        <input type="file" name="..." id="file1">
        </span>
        <a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
      </div>
    </div>
    </div>