小程序
小游戏
企业微信
微信支付
扫描小程序码分享
checkbox多选按钮组,怎么限制选择勾选的个数,超出了禁止勾选 但是已选的按钮可以反选
求解帮忙,没头绪
!
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
const items = this.data.items const values = e.detail.value //判断如果选择长度大于3,则删除第一个已选择的元素 if(values.length>3){ values.shift(values[0]) } for (let i = 0, lenI = items.length; i < lenI; ++i) { items[i].checked = false for (let j = 0, lenJ = values.length; j < lenJ; ++j) { if (items[i].value === values[j]) { items[i].checked = true break } } }
在官方代码基础上进行注释行判断,选择项大于3直接删除第一个。
然官方这块有个很大的坑,e.detail.value接收的用户点击选项,其数组排序和点击顺序无关,其顺序竟然是跟的默认选择项顺序,所以当你选择多于3项时,抛出的是最上面的一个选项,希望其他高手给出解决办法。
个人自定义了最新的方法,已解决该问题了,详情见本人博客:https://www.diandian100.cn/cf5b448a.html
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
最简单暴力的可能是维护一份数量跟checkbox选项一直的状态数组,0代表未选择,1代表一选择。
然后每次勾选的时候先去遍历数组,看看是否达到最大勾选数了;取消勾选则不做限制
试试这样?
要代码不如先开价
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
const items = this.data.items const values = e.detail.value //判断如果选择长度大于3,则删除第一个已选择的元素 if(values.length>3){ values.shift(values[0]) } for (let i = 0, lenI = items.length; i < lenI; ++i) { items[i].checked = false for (let j = 0, lenJ = values.length; j < lenJ; ++j) { if (items[i].value === values[j]) { items[i].checked = true break } } }
在官方代码基础上进行注释行判断,选择项大于3直接删除第一个。
然官方这块有个很大的坑,e.detail.value接收的用户点击选项,其数组排序和点击顺序无关,其顺序竟然是跟的默认选择项顺序,所以当你选择多于3项时,抛出的是最上面的一个选项,希望其他高手给出解决办法。
个人自定义了最新的方法,已解决该问题了,详情见本人博客:https://www.diandian100.cn/cf5b448a.html
最简单暴力的可能是维护一份数量跟checkbox选项一直的状态数组,0代表未选择,1代表一选择。
然后每次勾选的时候先去遍历数组,看看是否达到最大勾选数了;取消勾选则不做限制
试试这样?
要代码不如先开价