Skip to content
On this page

Checkbox 多选框

在一组备选项中进行多选。

基础用法

单独使用可以表示两种状态之间的切换,写在标签中的内容为 checkbox 按钮后的介绍。

checkbox-group元素能把多个 checkbox 管理为一组,只需要在 Group 中使用 v-model 绑定 Array 类型的变量即可。 只有一个选项时的默认值类型为 Boolean,当选中时值为truecheckbox 标签中的内容将成为复选框按钮之后的描述。

<template>
  <div>
    <EtuCheckbox v-model="checked1" label="Option 1" />
    <EtuCheckbox v-model="checked2" label="Option 2" />
  </div>
</template>

<script lang="ts" setup>
import { ref } from "vue";

const checked1 = ref(true);
const checked2 = ref(false);
</script>
<template>
  <div>
    <EtuCheckbox v-model="checked1" label="Option 1" />
    <EtuCheckbox v-model="checked2" label="Option 2" />
  </div>
</template>

<script lang="ts" setup>
import { ref } from "vue";

const checked1 = ref(true);
const checked2 = ref(false);
</script>

禁用状态

多选框不可用状态,需要设置设置 disabled 属性

<template>
  <div>
    <EtuCheckbox v-model="checked1" label="Option 1" disabled />
    <EtuCheckbox v-model="checked2" label="Option 2" />
  </div>
</template>

<script lang="ts" setup>
import { ref } from "vue";

const checked1 = ref(false);
const checked2 = ref(true);
</script>
<template>
  <div>
    <EtuCheckbox v-model="checked1" label="Option 1" disabled />
    <EtuCheckbox v-model="checked2" label="Option 2" />
  </div>
</template>

<script lang="ts" setup>
import { ref } from "vue";

const checked1 = ref(false);
const checked2 = ref(true);
</script>

多选框组

适用于多个勾选框绑定到同一个数组的情景,通过是否勾选来表示这一组选项中选中的项。

checkbox-group 元素中定义 v-model 绑定变量,单一的 checkbox 中,默认绑定变量的值会是 Boolean,选中为 true。 在 checkbox 组件中,label 是选择框的值。 如果该组件下没有被传入内容,那么 label 将会作为 checkbox 按钮后的介绍。 label 也与数组中的元素值相对应。 如果指定的值存在于数组中,就处于选择状态,反之亦然。

<template>
  <EtuCheckboxGroup v-model="checkList">
    <EtuCheckbox label="Option A" />
    <EtuCheckbox label="Option B" />
    <EtuCheckbox label="Option C" />
    <EtuCheckbox label="disabled" disabled />
    <EtuCheckbox label="selected and disabled" disabled />
  </EtuCheckboxGroup>
</template>

<script lang="ts" setup>
import { ref } from "vue";

const checkList = ref(["selected and disabled", "Option A"]);
</script>
<template>
  <EtuCheckboxGroup v-model="checkList">
    <EtuCheckbox label="Option A" />
    <EtuCheckbox label="Option B" />
    <EtuCheckbox label="Option C" />
    <EtuCheckbox label="disabled" disabled />
    <EtuCheckbox label="selected and disabled" disabled />
  </EtuCheckboxGroup>
</template>

<script lang="ts" setup>
import { ref } from "vue";

const checkList = ref(["selected and disabled", "Option A"]);
</script>

中间状态

indeterminate 属性用以表示 checkbox 的不确定状态,一般用于实现全选的效果

<template>
  <EtuCheckbox
    v-model="checkAll"
    :indeterminate="isIndeterminate"
    @change="handleCheckAllChange"
    >Check all</EtuCheckbox
  >
  <EtuCheckboxGroup v-model="checkedCities" @change="handleCheckedCitiesChange">
    <EtuCheckbox v-for="city in cities" :key="city" :label="city"
      >{{ city }}
    </EtuCheckbox>
  </EtuCheckboxGroup>
</template>

<script lang="ts" setup>
import { ref } from "vue";

const checkAll = ref(false);
const isIndeterminate = ref(true);
const checkedCities = ref(["Shanghai", "Beijing"]);
const cities = ["Shanghai", "Beijing", "Guangzhou", "Shenzhen"];

const handleCheckAllChange = (val: boolean) => {
  checkedCities.value = val ? cities : [];
  isIndeterminate.value = false;
};
const handleCheckedCitiesChange = (value: string[]) => {
  const checkedCount = value.length;
  checkAll.value = checkedCount === cities.length;
  isIndeterminate.value = checkedCount > 0 && checkedCount < cities.length;
};
</script>
<template>
  <EtuCheckbox
    v-model="checkAll"
    :indeterminate="isIndeterminate"
    @change="handleCheckAllChange"
    >Check all</EtuCheckbox
  >
  <EtuCheckboxGroup v-model="checkedCities" @change="handleCheckedCitiesChange">
    <EtuCheckbox v-for="city in cities" :key="city" :label="city"
      >{{ city }}
    </EtuCheckbox>
  </EtuCheckboxGroup>
</template>

<script lang="ts" setup>
import { ref } from "vue";

const checkAll = ref(false);
const isIndeterminate = ref(true);
const checkedCities = ref(["Shanghai", "Beijing"]);
const cities = ["Shanghai", "Beijing", "Guangzhou", "Shenzhen"];

const handleCheckAllChange = (val: boolean) => {
  checkedCities.value = val ? cities : [];
  isIndeterminate.value = false;
};
const handleCheckedCitiesChange = (value: string[]) => {
  const checkedCount = value.length;
  checkAll.value = checkedCount === cities.length;
  isIndeterminate.value = checkedCount > 0 && checkedCount < cities.length;
};
</script>

可选项目数量的限制

使用 minmax 属性能够限制可以被勾选的项目的数量。

<template>
  <EtuCheckboxGroup v-model="checkedCities" :min="1" :max="2">
    <EtuCheckbox v-for="city in cities" :key="city" :label="city">{{
      city
    }}</EtuCheckbox>
  </EtuCheckboxGroup>
</template>

<script lang="ts" setup>
import { ref } from "vue";

const checkedCities = ref(["Shanghai", "Beijing"]);
const cities = ["Shanghai", "Beijing", "Guangzhou", "Shenzhen"];
</script>
<template>
  <EtuCheckboxGroup v-model="checkedCities" :min="1" :max="2">
    <EtuCheckbox v-for="city in cities" :key="city" :label="city">{{
      city
    }}</EtuCheckbox>
  </EtuCheckboxGroup>
</template>

<script lang="ts" setup>
import { ref } from "vue";

const checkedCities = ref(["Shanghai", "Beijing"]);
const cities = ["Shanghai", "Beijing", "Guangzhou", "Shenzhen"];
</script>

Checkbox 属性

属性名说明类型默认值
model-value / v-model选中项绑定值string / number / boolean
label选中状态的值(只有在checkbox-group或者绑定对象类型为array时有效)string / number / boolean / object
<<<<<<< HEAD
true-label选中时的值string / number
false-label没有选中时的值string / number
disabled是否禁用booleanfalse
border是否显示边框booleanfalse
sizeCheckbox 的尺寸large / default /small
name原生 name 属性string
checked当前是否勾选booleanfalse
indeterminate设置不确定状态,仅负责样式控制booleanfalse
=======
disabled是否禁用booleanfalse
name原生 name 属性string
checked当前是否勾选booleanfalse
indeterminate设置不确定状态,仅负责样式控制booleanfalse

0bec4eacde08cb38ed511badec33b2384be5366b

Checkbox 事件

事件名说明类型
change当绑定值变化时触发的事件Function

Checkbox 插槽

插槽名说明
default自定义默认内容

CheckboxGroup 属性

属性名说明类型默认值
model-value / v-model绑定值object[]
size多选框组尺寸enum
disabled是否禁用booleanfalse
min可被勾选的 checkbox 的最小数量number
max可被勾选的 checkbox 的最大数量number

CheckboxGroup 事件

事件名说明类型
change当绑定值变化时触发的事件Function

CheckboxGroup 插槽

插槽名说明子标签
default自定义默认内容Checkbox