Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to reset/clear file Input

I am stuck with this problem from resetting an image file from input type=file. This is the scenario, I set an image and then I clicked the 'Cancel' button (which means it was reset), and then I will set again the same image, it will not set. I do not know why but I think it is a bug.

Here is my code for resetting the image/form.

    resetImage () {
  this.$refs.addImageForm.reset()
  this.dialog = ''
  this.imgSrc = ''
  this.fileName = ''
  this.imgUrl = ''
  this.file = ''
}

I am using Vue.js and Vuetify if that helps. I hope you can help me. I am stuck with this problem

HERE IS THE HTML

    <template>
  <v-dialog
    persistent
    v-model="dialog"
    width="600"
  >
    <template v-slot:activator="{ on }">
      <v-btn depressed color="primary" v-on="on">
        <v-icon class="pr-2">check</v-icon>Approve
      </v-btn>
    </template>
    <v-card>
      <div class="px-4 pt-3">
        <span class="subheading font-weight-bold">Approve Details</span>
        <input
          ref="image"
          type="file"
          name="image"
          accept="image/*"
          style="display: none;"
          @change="setImage"
        />
        <v-layout row wrap align-center>
          <v-flex xs12 class="pa-0">
            <div class="text-xs-center">
              <v-img :src="imgUrl" contain/>
            </div>
            <VueCropper
              :dragMode="'none'"
              :viewMode="1"
              :autoCrop="false"
              :zoomOnWheel="false"
              :background="false"
              :src="imgSrc"
              v-show="false"
              ref="cropper"
            />
            <v-form ref="addImageForm" lazy-validation>
              <v-layout row wrap class="pt-2">
                <v-flex xs12>
                  <v-text-field
                    outline
                    readonly
                    :label="imgSrc ? 'Click here to change the image' : 'Click here to upload image'"
                    append-icon='attach_file'
                    :rules="imageRule"
                    v-model='fileName'
                    @click='launchFilePicker'
                  ></v-text-field>
                </v-flex>
              </v-layout>
            </v-form>
          </v-flex>
        </v-layout>
      </div>
      <v-divider></v-divider>
      <v-card-actions class="px-4">
        <v-btn
          large
          flat
          @click="resetImage()"
        >Cancel</v-btn>
        <v-spacer></v-spacer>
        <v-btn
          large
          depressed
          color="primary"
          @click="approveCashout"
          :loading="isUploading"
        >Approve</v-btn>
      </v-card-actions>
    </v-card>
  </v-dialog>
</template>
like image 648
Peter Parker Avatar asked Jan 09 '20 06:01

Peter Parker


People also ask

How do I reset the input on a file?

Resetting a file input is possible and pretty easy with jQuery and HTML. For that purpose, you should wrap a <form> around <input type="file">, then call reset on the form by using the reset() method, then remove the form from the DOM by using the unwrap() method.

How do I reset my input Vue?

reset(); This code above resets the field values. To reset the input, I let vue rerender it. Just add a key to the input and change the value of the key whenever you want the file input to be cleared.

How do I reset a form?

The HTMLFormElement. reset() method restores a form element's default values. This method does the same thing as clicking the form's <input type="reset"> control. If a form control (such as a reset button) has a name or id of reset it will mask the form's reset method.

How do you delete selected files on file upload control after a successful upload?

bind('focus', function() { // Clear any files currently selected in #upload-file $('#upload-file'). val(''); }) ; // Choose uploading new one - this works ok $('#upload-file'). bind('focus', function() { // Clear any files currently selected in #select-file $('#select-file').


2 Answers

You can use ref for reset file uploader value.

this.$refs.fileupload.value=null;

codepen - https://codepen.io/Pratik__007/pen/MWYVjqP?editors=1010

like image 87
Patel Pratik Avatar answered Sep 24 '22 13:09

Patel Pratik


I tried several suggestions I found on Stackoverflow, but in my project there were several errors. What solved my problem was:

<input type="file" ref="inputFile"/>

this.$refs.inputFile.reset();

This code above resets the field values.

like image 20
Diego Miranda Neves Gomes Avatar answered Sep 21 '22 13:09

Diego Miranda Neves Gomes