如何使用Vuetify验证复选框组

时间:2019-09-02 09:31:55

标签: javascript vue.js vuejs2 vuetify.js

我的Vue + Vuetify项目中有一组复选框。我想验证是否使用Vuetify的"Validation with submit & clear"选中了至少一个复选框。

验证无线电组很容易,并且通过将规则应用于无线电组可以很好地工作:

<v-radio-group v-model="radio" required :rules="radioRules" row>
    <v-radio label="A" value="a"></v-radio>
    <v-radio label="B" value="b"></v-radio>
    <v-radio label="C" value="c"></v-radio>
</v-radio-group>

问题:

不幸的是,对于复选框,我找不到类似v-checkbox-group的组选项,因此我的复选框如下所示:

<v-checkbox class="pr-6" v-model="selected" label="A" value="a"></v-checkbox>
<v-checkbox class="pr-6" v-model="selected" label="B" value="b"></v-checkbox>
<v-checkbox class="pr-6" v-model="selected" label="C" value="c"></v-checkbox>

问题:

如何将规则应用于复选框,以验证至少选中了一个复选框this.selected.length > 0

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

可以使用v-model这样的数组来完成。只需使用计算的属性进行验证:

computed: {
    rules() {
      return [
        this.selected.length > 0 || "At least one item should be selected"
      ];
    }
  }

这里是Codepen

还要注意如何使用hide-details的{​​{1}}属性。

答案 1 :(得分:1)

为什么不将模型的selected字段定义为数组,然后将其绑定到下面的复选框?

<v-checkbox class="pr-6" v-model="selected[0]" label="A" value="a"></v-checkbox>
<v-checkbox class="pr-6" v-model="selected[1]" label="B" value="b"></v-checkbox>
<v-checkbox class="pr-6" v-model="selected[2]" label="C" value="c"></v-checkbox>

用于验证:

return this.selected.fitler(s => s === true).length > 0