我的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
?
感谢您的帮助!
答案 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