1

使用 Vuelidate,由于 'required' 验证器现在认为布尔值 'false' 是一个有效值,因此您必须使用 'sameAs'sameAs: sameAs( () => true )来实现复选框所需的验证。如何使用 vuelidate 对复选框实施“requiredUnless”验证,其中仅在属性不是特定值时才需要检查复选框?

4

2 回答 2

2

false 被验证为有效,因此您需要将其更改为空字符串,我将在手表中执行此操作:

    data() {
        return {
            email: '',
            age: null,
            password: '',
            confirmPassword: '',
            country: 'Malta', 
            hobbyInputs: [],
            terms: '',
            countries,                
        }
    },        
    validations: {
      terms: {
        required: requiredUnless(vm => {
          return vm.country === 'Malta'
        }),
      }
    },
    watch: {
      terms() {
        if (!this.terms) {
          this.terms = '';
        }
      }
    },
于 2020-10-08T19:17:13.627 回答
0

我找不到使用 vuelidate 进行验证的方法。所以我创建了一个方法,它通过执行一个方法来切换一个 css 类并将 $v 对象传递给它,并且只在值不是选定值时运行验证。

 <div class="input inline" :class="{invalid: checkCountry($v)}">

验证者

 Validations: {
  terms: {
    sameAs: sameAs(vm => {
      if (!(vm.country === 'germany')) {
        return true;
      } else {
        return false;
      }
    })

方法

methods: {
    checkCountry($v) {
      if (this.country === 'germany') {
        return false;
      } else {
        return $v.terms.$invalid;
      }
    }
于 2020-01-29T16:15:13.110 回答