Vee验证如何验证单选按钮

时间:2020-08-05 14:59:35

标签: vue.js nuxt.js vee-validate

从VeeValidate可用规则中,您可以使用oneOf VeeValidate Rules

来验证select
<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>

但是我不知道如何使用广播盒

<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>

我正在使用nuxt

import { extend } from 'vee-validate';
import { oneOf } from 'vee-validate/dist/rules';

// Add the required rule
extend('oneOf ', {
  ...oneOf ,
  message: 'Choose one'
});

数据和组件

data () {
      return {
        choice: ''
  }
}

components: {
    ValidationObserver: ValidationObserver,
    ValidationProvider: ValidationProvider
  },

VeeValidate可在所有其他输入上使用

1 个答案:

答案 0 :(得分:1)

已编辑

我的方法是将ValidationProvider包装在最后一个单选输入周围。像这样:

<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>

以前,我将validationProvider封装在每个无线电输入周围,但是我发现如果多个validationProvider使用相同的名称,则实际上只有最后一个有效。