实现单选功能。单选组需要共享同一个 v-model 绑定值,通过 value 属性区分选…">
当前位置:首页 > VUE

vue实现单选多选

2026-03-30 11:29:46VUE

Vue 实现单选

使用 v-model 绑定单选值,结合 <input type="radio"> 实现单选功能。单选组需要共享同一个 v-model 绑定值,通过 value 属性区分选项。

vue实现单选多选

<template>
  <div>
    <label v-for="option in options" :key="option.value">
      <input 
        type="radio" 
        v-model="selected" 
        :value="option.value"
      >
      {{ option.label }}
    </label>
    <p>当前选中: {{ selected }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selected: '',
      options: [
        { value: 'A', label: '选项A' },
        { value: 'B', label: '选项B' },
        { value: 'C', label: '选项C' }
      ]
    }
  }
}
</script>

Vue 实现多选

多选通过 <input type="checkbox"> 实现,v-model 绑定到数组类型变量。勾选时自动添加值到数组,取消勾选时移除对应值。

vue实现单选多选

<template>
  <div>
    <label v-for="option in options" :key="option.value">
      <input 
        type="checkbox" 
        v-model="selected" 
        :value="option.value"
      >
      {{ option.label }}
    </label>
    <p>已选中: {{ selected.join(', ') }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selected: [], // 必须初始化为数组
      options: [
        { value: 'A', label: '选项A' },
        { value: 'B', label: '选项B' },
        { value: 'C', label: '选项C' }
      ]
    }
  }
}
</script>

使用组件库实现

Element UI 的单选/多选组件示例:

<!-- 单选 -->
<el-radio-group v-model="radio">
  <el-radio label="A">选项A</el-radio>
  <el-radio label="B">选项B</el-radio>
</el-radio-group>

<!-- 多选 -->
<el-checkbox-group v-model="checkList">
  <el-checkbox label="A">选项A</el-checkbox>
  <el-checkbox label="B">选项B</el-checkbox>
</el-checkbox-group>

自定义样式单选/多选

通过 CSS 隐藏原生 <input>,用 <span> 模拟选中样式:

<template>
  <div class="custom-checkbox">
    <label 
      v-for="option in options" 
      :key="option.value"
      :class="{ active: selected.includes(option.value) }"
    >
      <input 
        type="checkbox" 
        v-model="selected" 
        :value="option.value" 
        hidden
      >
      <span class="checkmark"></span>
      {{ option.label }}
    </label>
  </div>
</template>

<style>
.custom-checkbox label {
  display: flex;
  align-items: center;
  cursor: pointer;
}
.checkmark {
  display: inline-block;
  width: 16px;
  height: 16px;
  border: 1px solid #ccc;
  margin-right: 8px;
}
.active .checkmark {
  background-color: #409eff;
}
</style>

注意事项

  • 单选时 v-model 绑定值应为基本类型(字符串/数字)
  • 多选时 v-model 必须绑定到数组,初始值设为 []
  • 使用组件库时注意不同库的 API 差异(如 Ant Design Vue 用 a-radio-group
  • 移动端可考虑添加 <fieldset> 提升可访问性

标签: 多选单选
分享给朋友:

相关文章

vue实现考试多选功能

vue实现考试多选功能

实现考试多选功能的方法 数据绑定与选项渲染 使用v-model绑定用户选择的答案数组,配合v-for渲染选项列表: <template> <div v-for="(op…

vue实现div多选

vue实现div多选

Vue 实现 Div 多选功能 基础实现思路 通过 Vue 的数据绑定和事件处理,可以轻松实现 div 的多选功能。核心是维护一个数组来存储选中的 div 的标识符,并通过 v-bind 和 v-on…

vue 实现列表多选

vue 实现列表多选

Vue 实现列表多选的方法 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动处理多选逻辑。适用于复选框(checkbox)场景。 <template> &…

vue中实现多选

vue中实现多选

Vue中实现多选的方法 使用v-model绑定数组 在Vue中,可以通过v-model绑定一个数组来实现多选功能。当用户选择多个选项时,选中的值会自动添加到数组中。 <template>…

vue实现多选效果

vue实现多选效果

Vue 实现多选效果的方法 使用 v-model 绑定数组 在 Vue 中,可以通过 v-model 绑定一个数组来实现多选效果。适用于复选框组(checkbox)或下拉多选(select multi…

vue实现按钮多选

vue实现按钮多选

实现按钮多选功能 在Vue中实现按钮多选功能,可以通过以下方法完成。这里提供两种常见的实现方式:基于数组管理和使用v-model绑定。 基于数组管理选中状态 定义一个数组来存储选中的按钮值,通过v-…