'Vuetify: how to check if a form is valid without showing the errors with validate()?
I have a form. I still want the form to lazy validate, so everytime I leave a field it should show if it is wrong or correct. BUT at some point I have a method that has to check if the entire form is valid. But when I used validate() it shows all the errors. I could use resetValidate() but that would just remove all errors, even from the filled fields. Any suggestions?
MWE from Vuetify page:
<template>
<validation-observer
ref="observer"
v-slot="{ invalid }"
>
<form @submit.prevent="submit">
<validation-provider
v-slot="{ errors }"
name="Name"
rules="required|max:10"
>
<v-text-field
v-model="name"
:counter="10"
:error-messages="errors"
label="Name"
required
></v-text-field>
</validation-provider>
<validation-provider
v-slot="{ errors }"
name="phoneNumber"
:rules="{
required: true,
digits: 7,
regex: '^(71|72|74|76|81|82|84|85|86|87|88|89)\\d{5}$'
}"
>
<v-text-field
v-model="phoneNumber"
:counter="7"
:error-messages="errors"
label="Phone Number"
required
></v-text-field>
</validation-provider>
<validation-provider
v-slot="{ errors }"
name="email"
rules="required|email"
>
<v-text-field
v-model="email"
:error-messages="errors"
label="E-mail"
required
></v-text-field>
</validation-provider>
<validation-provider
v-slot="{ errors }"
name="select"
rules="required"
>
<v-select
v-model="select"
:items="items"
:error-messages="errors"
label="Select"
data-vv-name="select"
required
></v-select>
</validation-provider>
<validation-provider
v-slot="{ errors }"
rules="required"
name="checkbox"
>
<v-checkbox
v-model="checkbox"
:error-messages="errors"
value="1"
label="Option"
type="checkbox"
required
></v-checkbox>
</validation-provider>
<v-btn
class="mr-4"
type="submit"
:disabled="invalid"
>
submit
</v-btn>
<v-btn @click="clear">
clear
</v-btn>
</form>
</validation-observer>
</template>
<script>
import { required, digits, email, max, regex } from 'vee-validate/dist/rules'
import { extend, ValidationObserver, ValidationProvider, setInteractionMode } from 'vee-validate'
setInteractionMode('eager')
extend('digits', {
...digits,
message: '{_field_} needs to be {length} digits. ({_value_})',
})
extend('required', {
...required,
message: '{_field_} can not be empty',
})
extend('max', {
...max,
message: '{_field_} may not be greater than {length} characters',
})
extend('regex', {
...regex,
message: '{_field_} {_value_} does not match {regex}',
})
extend('email', {
...email,
message: 'Email must be valid',
})
export default {
components: {
ValidationProvider,
ValidationObserver,
},
data: () => ({
name: '',
phoneNumber: '',
email: '',
select: null,
items: [
'Item 1',
'Item 2',
'Item 3',
'Item 4',
],
checkbox: null,
}),
methods: {
submit () {
v = this.$refs.observer.validate()
console.log("isValid" + v)
},
clear () {
this.name = ''
this.phoneNumber = ''
this.email = ''
this.select = null
this.checkbox = null
this.$refs.observer.reset()
},
},
}
</script>
How to rewrite the submit button so it checks the entire form without adding or removing errors?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
