checkbox 怎么阻止选中?

发布于 7 年前作者 chengjing4341 次浏览最后编辑 7 年前来自 issues

现在通过一个for循环渲染一组checkbox,规则是:最多选中三个。

想法:通过判断选中是否已经有三个,有就阻止再选。

但是,发现checkbox不能阻止选中,就算在checkbox-groud的bindchange的事件中return阻止了,也不行,所有求助各位大佬

5 回复
rxiao
rxiao2 楼5 年前
1、checkBox 放在 checkbox-group 标签内

<block wx:for="{{hardwares}}" wx:key="value">

 <checkbox class="weui-check" value="{{item.value}}" checked="{{item.checked}}" />
<icon class="weui-icon-checkbox_circle" type="circle" size="16" wx:if="{{!item.checked}}"></icon>
 <icon class="weui-icon-checkbox_success" type="success" size="16" wx:if="{{item.checked}}"></icon>
</block>

2、checkbox-group 绑定事件 bindchange="checkboxChange"

3、建立数据 
  hardwares: [{
        name"0",
        value0
      },
      {
        name"1",
        value1
      }] 到 data 中,再写个如下函数,根据具体情况判断重新赋值

  checkboxChangefunction (e{
    console.log('checkbox发生change事件,携带value值为:', e.detail.value);

    var hardwares = this.data.hardwares,
      values = e.detail.value;
    for (var i = 0, lenI = hardwares.length; i < lenI; ++i) {
      hardwares[i].checked = false;

      for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
        if (hardwares[i].value == values[j]) {
          hardwares[i].checked = true;
          break;
        }
      }
    }

    this.setData({
      hardwares: hardwares
    });
  }

gangsun
gangsun3 楼5 年前
gangliang
gangliang4 楼5 年前

disabled

naqiao
naqiao5 楼5 年前

bindchange 判断下 已经选中3个的情况下 设置当前这个值为false