小程序
小游戏
企业微信
微信支付
扫描小程序码分享
一直没有想到好的解决办法。
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
目前并没有提供相关接口,可以尝试监听checkbox-group的change方法,在里面判断已选择的数量来调整每个checkbox的选中状态。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
利用官方例子快速撸了个Demo。楼主可在空白页面看看效果和思路,然后进行精进或扩展。
<
checkbox-group
>
label
class
=
"checkbox"
wx:for
"{{items}}"
wx:key
"index"
checkbox
id
"{{index}}"
checked
"{{item.checked}}"
disabled
"{{item.canCheck}}"
bindtap
"checkChange"
/>{{item.value}}
</
Page({
data: {
items: [
{ name:
'USA'
, value:
'美国'
},
'CHN'
'中国'
, checked:
true
'BRA'
'巴西'
'JPN'
'日本'
'ENG'
'英国'
'TUR'
'法国'
],
checkNum: 0,
max:
false
,
maxCheckedNum: 3
onLoad:
function
() {
var
items =
this
.data.items;
for
(
i=0;i<items.length;i++){
if
(items[i].checked)
.data.checkNum ++;
}
checkMax:
(num) {
const maxNum =
.data.maxCheckedNum;
const items =
(num == maxNum){
status =
;
else
(num < maxNum &&
.data.max){
(status != undefined){
.data.max = status;
i = 0; i < items.length; i++) {
(!items[i].checked) items[i].canCheck = status;
.setData({ items: items })
checkChange:
(e) {
let id = e.currentTarget.id;
.data.items[id].checked = !
.data.items[id].checked;
.data.checkNum =
.data.items[id].checked ?
.data.checkNum + 1 :
.data.checkNum - 1;
.checkMax(
.data.checkNum);
})
要注意的是初始选中的数量不能超过最大选择数。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
目前并没有提供相关接口,可以尝试监听checkbox-group的change方法,在里面判断已选择的数量来调整每个checkbox的选中状态。
利用官方例子快速撸了个Demo。楼主可在空白页面看看效果和思路,然后进行精进或扩展。
<
checkbox-group
>
<
label
class
=
"checkbox"
wx:for
=
"{{items}}"
wx:key
=
"index"
>
<
checkbox
id
=
"{{index}}"
checked
=
"{{item.checked}}"
disabled
=
"{{item.canCheck}}"
bindtap
=
"checkChange"
/>{{item.value}}
</
label
>
</
checkbox-group
>
Page({
data: {
items: [
{ name:
'USA'
, value:
'美国'
},
{ name:
'CHN'
, value:
'中国'
, checked:
true
},
{ name:
'BRA'
, value:
'巴西'
},
{ name:
'JPN'
, value:
'日本'
},
{ name:
'ENG'
, value:
'英国'
},
{ name:
'TUR'
, value:
'法国'
},
],
checkNum: 0,
max:
false
,
maxCheckedNum: 3
},
onLoad:
function
() {
var
items =
this
.data.items;
for
(
var
i=0;i<items.length;i++){
if
(items[i].checked)
this
.data.checkNum ++;
}
},
checkMax:
function
(num) {
const maxNum =
this
.data.maxCheckedNum;
const items =
this
.data.items;
if
(num == maxNum){
var
status =
true
;
}
else
if
(num < maxNum &&
this
.data.max){
var
status =
false
;
}
if
(status != undefined){
this
.data.max = status;
for
(
var
i = 0; i < items.length; i++) {
if
(!items[i].checked) items[i].canCheck = status;
}
this
.setData({ items: items })
}
},
checkChange:
function
(e) {
let id = e.currentTarget.id;
this
.data.items[id].checked = !
this
.data.items[id].checked;
this
.data.checkNum =
this
.data.items[id].checked ?
this
.data.checkNum + 1 :
this
.data.checkNum - 1;
this
.checkMax(
this
.data.checkNum);
}
})
要注意的是初始选中的数量不能超过最大选择数。