以下是根据uniapp官网给的代码改写的,理解后发现@change是每点击一次就触发一次checkboxChange函数,想了很久,用一个count来计数,每点击一次,会循环遍历整个选项,凡是有点击的,则会状态变为true,从而count也会自增一,从而最终提交check,看count的值就行。
<checkbox-group @change="checkboxChange">
<label v-for="item in items" :key="item.value">
<view>
<checkbox :value="item.value" :checked="item.checked" />{{item.name}}
</view>
</label>
</checkbox-group>
checkboxChange: function (e){
var items = this.items;
var values = e.detail.value;
this.count=0;
for (var i = 0, lenI = items.length; i < lenI; ++i) {
const item = items[i]
if(values.includes(item.value)){
this.$set(item,'checked',true)
this.count++
}else{
this.$set(item,'checked',false)
}
}
},
check:function () {
//const userid = uni.getStorageSync('userinfoA').userid
const userid = 1
if(!userid){
uni.showToast({
title: '请您先登录!',
icon: 'none'
})
return
}
else if(this.count>2)
{
uni.showToast({
title: '选择过多,最多选取两项',
icon: 'none'
})
}
else if(this.count==0)
{
uni.showToast({
title: '请选择至少一项!',
icon: 'none'
})
}