Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vee validate how to validate radio buttons

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

like image 917
Daniel Carr Avatar asked Sep 10 '25 03:09

Daniel Carr


1 Answers

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.

like image 141
Dora Hong Avatar answered Sep 13 '25 05:09

Dora Hong