From the VeeValidate available rules you can validate select with oneOf VeeValidate Rules
<ValidationProvider rules="oneOf:1,2,3" name="number" v-slot="{ errors }">
<select v-model="value">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four (invalid)</option>
</select>
<span>{{ errors[0] }}</span>
</ValidationProvider>
But I don't how to do it with radio boxes
<ValidationProvider rules="oneOf:1,2,3" name="choice" v-slot="{ errors }">
<label>
<input type="radio" value="1" v-model="choice">
One
</label>
<label>
<input type="radio" value="2" v-model="choice">
One
</label>
<label>
<input type="radio" value="3" v-model="choice">
One
</label>
<span>{{ errors[0] }}</span>
</ValidationProvider>
I'm using nuxt
import { extend } from 'vee-validate';
import { oneOf } from 'vee-validate/dist/rules';
// Add the required rule
extend('oneOf ', {
...oneOf ,
message: 'Choose one'
});
data and component
data () {
return {
choice: ''
}
}
components: {
ValidationObserver: ValidationObserver,
ValidationProvider: ValidationProvider
},
VeeValidate works on all other inputs
Edited
The way I do it is to wrap the ValidationProvider around the last radio input. Like this:
<label>
<input type="radio" value="1" v-model="choice">
One
</label>
<label>
<input type="radio" value="2" v-model="choice">
Two
</label>
<ValidationProvider rules="oneOf:1,2,3" name="choice" v-slot="{ errors }">
<label>
<input type="radio" value="3" v-model="choice">
Three
</label>
<span>{{ errors[0] }}</span>
</ValidationProvider>
Previously I wrapped the validationProvider around every radio input, but I found if multiple validationProviders are using the same name, only the last one actually gets validated.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With