微信小程序 checkbox 多选框可以阻止被选中吗?

<checkbox-group bindchange="checkboxChange">
  <label class="checkbox" wx:for="{{items}}">
    <checkbox value="{{item.name}}" checked="{{item.checked}}" />{{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: '法国'},
    ]
  },
  checkboxChange(e) {
    console.log('checkbox发生change事件,携带value值为:', e.detail.value)
  }
})

这是小程序 checkbox 的示例,我希望 <checkbox value="{{item.name}}" checked="{{item.checked}}" /> 选中状态可以根据数据来确定是否选中,比如在以上的代码中,

checkboxChange(e) {
    console.log('checkbox发生change事件,携带value值为:', e.detail.value)
    this.setData({
        // 我将第一项设置为true, 那么不管怎么点击,其他项也不会出现选中状态。这样都可以实现吗?
       items[0]: {name: 'USA', value: '美国', checked: true}
    })
  }

效果类似于 react 的受控组件。因为要在选中之前判断一些逻辑来确认是否可以被选中。但是刚开始做小程序,发现不行。。不知道要怎么搞。希望在点击多选框后先判断一些逻辑,再去改变状态。求大佬指点。谢谢

阅读 8.4k
2 个回答

使用disabled属性,设置如下:
DOM上的操作:

<checkbox-group bindchange="checkboxChange">
  <label class="checkbox" wx:for="{{items}}">
    <checkbox value="{{item.name}}" disabled="{{item.disabled}}" checked="{{item.checked}}" />{{item.value}}
  </label>
</checkbox-group>

Data数据结构:

items: [
      {name: 'USA', value: '美国'},
      {name: 'CHN', value: '中国', checked: 'true'},
      {name: 'BRA', value: '巴西', disabled: true},
      {name: 'JPN', value: '日本'},
      {name: 'ENG', value: '英国'},
      {name: 'TUR', value: '法国'},
]

楼主,最后怎么解决的?是模拟一个复选框吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题