checkbox 怎么阻止选中?
发布于 6 年前 作者 chengjing 4177 次浏览 来自 官方Issues

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

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

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

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
    });
  }

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

回到顶部