当前位置:首页 > VUE

vue实现复选择框

2026-02-20 15:48:16VUE

Vue 实现复选框

在 Vue 中实现复选框可以通过 v-model 指令绑定到数据属性,支持单选、多选或动态渲染复选框组。

基础实现

通过 v-model 绑定布尔值控制单个复选框的选中状态:

vue实现复选择框

<template>
  <div>
    <input type="checkbox" id="checkbox" v-model="checked">
    <label for="checkbox">{{ checked ? '已选中' : '未选中' }}</label>
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  }
}
</script>

多选绑定数组

多个复选框可绑定到同一个数组,选中的值会自动添加到数组中:

<template>
  <div>
    <input type="checkbox" id="apple" value="apple" v-model="fruits">
    <label for="apple">Apple</label>
    <input type="checkbox" id="banana" value="banana" v-model="fruits">
    <label for="banana">Banana</label>
    <p>选中的水果:{{ fruits }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fruits: []
    }
  }
}
</script>

动态渲染复选框组

通过 v-for 动态生成复选框列表:

vue实现复选择框

<template>
  <div>
    <div v-for="option in options" :key="option.value">
      <input 
        type="checkbox" 
        :id="option.value" 
        :value="option.value" 
        v-model="selectedOptions"
      >
      <label :for="option.value">{{ option.label }}</label>
    </div>
    <p>已选择:{{ selectedOptions }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      options: [
        { value: 'vue', label: 'Vue.js' },
        { value: 'react', label: 'React' },
        { value: 'angular', label: 'Angular' }
      ],
      selectedOptions: []
    }
  }
}
</script>

自定义样式与组件封装

使用 <label> 包裹 <input> 并隐藏原生样式,通过 CSS 自定义外观:

<template>
  <label class="custom-checkbox">
    <input type="checkbox" v-model="checked" hidden>
    <span class="checkmark"></span>
    {{ label }}
  </label>
</template>

<script>
export default {
  props: ['label', 'value'],
  computed: {
    checked: {
      get() { return this.value },
      set(val) { this.$emit('input', val) }
    }
  }
}
</script>

<style>
.custom-checkbox {
  display: flex;
  align-items: center;
  cursor: pointer;
}
.checkmark {
  width: 20px;
  height: 20px;
  border: 2px solid #ccc;
  margin-right: 8px;
  position: relative;
}
input:checked + .checkmark::after {
  content: "✓";
  position: absolute;
  top: -2px;
  left: 3px;
}
</style>

与表单验证集成

结合 Vuelidate 等库实现验证:

<template>
  <div>
    <input 
      type="checkbox" 
      v-model="acceptTerms"
      @blur="$v.acceptTerms.$touch()"
    >
    <label>同意条款</label>
    <p v-if="$v.acceptTerms.$error" class="error">必须接受条款</p>
  </div>
</template>

<script>
import { required } from 'vuelidate/lib/validators'
export default {
  data() {
    return {
      acceptTerms: false
    }
  },
  validations: {
    acceptTerms: { required }
  }
}
</script>

标签: 复选vue
分享给朋友:

相关文章

vue实现tree

vue实现tree

Vue 实现 Tree 组件 使用 Vue 实现 Tree 组件可以通过递归组件的方式来实现层级结构展示。以下是一个完整的实现方法: 基础递归组件实现 创建 Tree 组件文件 Tree.vue,使…

vue 绑定实现

vue 绑定实现

Vue 绑定实现 Vue 提供了多种数据绑定的方式,包括文本插值、属性绑定、事件绑定、双向绑定等。以下是常见的绑定实现方法: 文本插值 使用双大括号 {{ }} 进行文本插值,将数据动态渲染到 DO…

vue实现门户

vue实现门户

Vue 实现门户网站的关键步骤 搭建基础框架 使用 Vue CLI 或 Vite 初始化项目,安装 Vue Router 管理多页面路由。门户通常需要响应式布局,可引入 UI 库如 Element P…

vue实现投票

vue实现投票

Vue实现投票功能 数据准备 在Vue组件的data中定义投票相关数据,包括选项列表和当前选中状态: data() { return { options: [ { id: 1…

vue实现语言切换

vue实现语言切换

Vue 实现语言切换的方法 使用 vue-i18n 插件 安装 vue-i18n 插件: npm install vue-i18n 在项目中配置 vue-i18n: import Vue from…

vue菜单tab实现

vue菜单tab实现

实现Vue菜单Tab的步骤 在Vue中实现菜单Tab功能,可以通过动态组件或条件渲染来实现。以下是几种常见的方法: 使用动态组件 动态组件允许根据当前选中的Tab动态切换显示内容。定义一个组件数组…