@castetus

Vuelidate — как проверять 2 взаимозависимых чекбокса?

Здравствуйте все, не понимаю как сделать:
Есть 2 чекбокса, условие такое что required минимум один из них (любой)
Т.е. если хотя бы один отмечен, валидация проходит. Если оба, то тоже. Если ни одного, то error.
Как объяснить это vuelidate?
Сейчас сделал вот так:
<template>
    <input type="checkbox" name="life" id="" v-model="life" @change="$v.life.$touch()">
    <label for="life">Жизнь</label>
    <input type="checkbox" name="property" id="" v-model="property" @change="$v.property.$touch()">
    <label for="life">Имущество</label>
</template>

И валидация:
validations() {
    if(!this.property){
      return {
        life: {
          required (val) {
            return val
          }   
        },
      }
    }
    if(!this.life){
      return {
        property: {
          required (val) {
            return val
          }   
        },
      }
    }
  },


По одному работает, если отметить оба, то "Error in v-on handler: "TypeError: Cannot convert undefined or null to object"
Что не так?

И по моему, я вообще не туда куда-то зашел с этим вьюлидейтом.
Может, это все как-то проще делается?
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
По одному работает, если отметить оба, то "Error in v-on handler: "TypeError: Cannot convert undefined or null to object"

Что возвращает validations, если оба значения true? Ничего. Пусть всегда будет объект:

validations() {
  return {
    life: this.property ? {} : { required: v => v },
    property: this.life ? {} : { required: v => v },
  };
},

<div>STATUS: {{ $v.$invalid ? 'ЖОПА' : 'OK' }}</div>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы