Vuetify how can I disable button till all validation rules are true? Vuetify how can I disable button till all validation rules are true? vue.js vue.js

Vuetify how can I disable button till all validation rules are true?


Vuetify will track the validity of form if you wrap input elements in v-form and then attach v-model to form like this:

<v-form v-model="isFormValid">  <!-- all input elements go here --></v-form><!-- disable if form is not valid --><v-btn :disabled="!isFormValid">Add</v-btn>

You also need to add isFormValid to the component's data field:

data: () => ({  isFormValid: false,})

You can read more here: https://vuetifyjs.com/en/components/forms


You can create a computed property do to it. Lets say name and site are requireds, so:

<temlate>  <v-btn :disabled="isAddButtonDisabled" @click="submit" color="grey darken-4" class="green--text text--accent-2" dark>Add</v-btn></template>
<script>export default {  data() {    return {      addTool: {        name: "",        categories: [],        created_on: "",        site: ""      },    };  },  computed: {    isAddButtonDisabled() {      return !(this.addTool.name || this.addTool.site);      // means u have neither name nor site      },  },};</script>

If you need to check if form is valid, you can do:

export default {  computed: {    formValid () {      // loop over all contents of the fields object and check if they exist and valid.      return Object.keys(this.addTool).every(field => {        return this.addTool[field] && this.addTool[field].valid;      });    }  }}

From here: https://github.com/logaretm/vee-validate/issues/853