Skip to content

checkbox-group ​

多项选择器,内部由多个 checkbox 组成。

属性说明

属性名类型默认值说明
@changeEventHandle<checkbox-group>中选中项发生改变是触发 change 事件,detail = {value:[选中的checkbox的value的数组]}

checkbox ​

多选项目。

属性说明

属性名类型默认值说明
valueString<checkbox> 标识,选中时触发 <checkbox-group> 的 change 事件,并携带 <checkbox> 的 value。
disabledBooleanfalse是否禁用
checkedBooleanfalse当前是否选中,可用来设置默认选中
colorColorcheckbox的颜色,同css的color

示例 查看演示

以下示例代码,来自于hello uni-app项目,推荐使用HBuilderX,新建uni-app项目,选择hello uni-app模板,可直接体验完整示例。

vue
<template>
  <view>
    <view class="uni-padding-wrap uni-common-mt">
      <view class="uni-title uni-common-mt">默认样式</view>
      <view>
        <checkbox-group>
          <label>
            <checkbox value="cb" checked="true" />选中
          </label>
          <label>
            <checkbox value="cb" />未选中
          </label>
        </checkbox-group>
      </view>
      <view class="uni-title uni-common-mt">不同颜色和尺寸的checkbox</view>
      <view>
        <checkbox-group>
          <label>
            <checkbox
              value="cb"
              checked="true"
              color="#FFCC33"
              style="transform:scale(0.7)"
            />选中
          </label>
          <label>
            <checkbox
              value="cb"
              color="#FFCC33"
              style="transform:scale(0.7)"
            />未选中
          </label>
        </checkbox-group>
      </view>
    </view>
    
    <view class="uni-padding-wrap">
      <view class="uni-title uni-common-mt">
        推荐展示样式
        <text>\n使用 uni-list 布局</text>
      </view>
    </view>
    <view class="uni-list">
      <checkbox-group @change="checkboxChange">
        <label
          class="uni-list-cell uni-list-cell-pd"
          v-for="item in items"
          :key="item.value"
        >
          <view>
            <checkbox
              :value="item.value"
              :checked="item.checked"
            />
          </view>
          <view>{{item.name}}</view>
        </label>
      </checkbox-group>
    </view>
  </view>
</template>
<template>
  <view>
    <view class="uni-padding-wrap uni-common-mt">
      <view class="uni-title uni-common-mt">默认样式</view>
      <view>
        <checkbox-group>
          <label>
            <checkbox value="cb" checked="true" />选中
          </label>
          <label>
            <checkbox value="cb" />未选中
          </label>
        </checkbox-group>
      </view>
      <view class="uni-title uni-common-mt">不同颜色和尺寸的checkbox</view>
      <view>
        <checkbox-group>
          <label>
            <checkbox
              value="cb"
              checked="true"
              color="#FFCC33"
              style="transform:scale(0.7)"
            />选中
          </label>
          <label>
            <checkbox
              value="cb"
              color="#FFCC33"
              style="transform:scale(0.7)"
            />未选中
          </label>
        </checkbox-group>
      </view>
    </view>
    
    <view class="uni-padding-wrap">
      <view class="uni-title uni-common-mt">
        推荐展示样式
        <text>\n使用 uni-list 布局</text>
      </view>
    </view>
    <view class="uni-list">
      <checkbox-group @change="checkboxChange">
        <label
          class="uni-list-cell uni-list-cell-pd"
          v-for="item in items"
          :key="item.value"
        >
          <view>
            <checkbox
              :value="item.value"
              :checked="item.checked"
            />
          </view>
          <view>{{item.name}}</view>
        </label>
      </checkbox-group>
    </view>
  </view>
</template>
js
<script>
  export default {
    data() {
      return {
        title: 'checkbox 复选框',
        items: [
          {
            value: 'USA',
            name: '美国',
          },
          {
            value: 'CHN',
            name: '中国',
            checked: 'true',
          },
          {
            value: 'BRA',
            name: '巴西',
          },
          {
            value: 'JPN',
            name: '日本',
          },
          {
            value: 'ENG',
            name: '英国',
          },
          {
            value: 'FRA',
            name: '法国',
          },
        ],
      };
    },
    methods: {
      checkboxChange: function (e) {
        var items = this.items,
          values = e.detail.value;
        for (var i = 0, lenI = items.length; i < lenI; ++i) {
          const item = items[i]
          if(values.includes(item.value)){
            this.$set(item,'checked',true)
          }else{
            this.$set(item,'checked',false)
          }
        }
      }
    }
  }
</script>
<script>
  export default {
    data() {
      return {
        title: 'checkbox 复选框',
        items: [
          {
            value: 'USA',
            name: '美国',
          },
          {
            value: 'CHN',
            name: '中国',
            checked: 'true',
          },
          {
            value: 'BRA',
            name: '巴西',
          },
          {
            value: 'JPN',
            name: '日本',
          },
          {
            value: 'ENG',
            name: '英国',
          },
          {
            value: 'FRA',
            name: '法国',
          },
        ],
      };
    },
    methods: {
      checkboxChange: function (e) {
        var items = this.items,
          values = e.detail.value;
        for (var i = 0, lenI = items.length; i < lenI; ++i) {
          const item = items[i]
          if(values.includes(item.value)){
            this.$set(item,'checked',true)
          }else{
            this.$set(item,'checked',false)
          }
        }
      }
    }
  }
</script>
css
<style>
.uni-list-cell {
  justify-content: flex-start
}
</style>
<style>
.uni-list-cell {
  justify-content: flex-start
}
</style>

注意

  • checkbox 的默认颜色,在不同平台不一样。微信小程序是绿色的,抖音小程序为红色,其他平台是蓝色的。更改颜色使用 color 属性。
  • 如需调节checkbox大小,可通过 css 的 scale 方法调节,如缩小到 70% style="transform:scale(0.7)"

扩展

  • qin-ui 提供了增强的 qin-data-checkbox 组件,基于datacom 规范,只需传入data数据,即可自动生成一组复选框,使用方式更简洁,并且支持 qin-forms 的表单验证。 qin-data-checkbox 组件详见