当前位置:首页 > VUE

vue实现复选择框

2026-02-20 15:48:16VUE

Vue 实现复选框

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

基础实现

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

<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 动态生成复选框列表:

<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 等库实现验证:

vue实现复选择框

<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实现granfana

vue实现granfana

Vue 实现类似 Grafana 的仪表盘 要在 Vue 中实现类似 Grafana 的仪表盘功能,需要结合数据可视化库、状态管理和 UI 组件。以下是关键步骤和推荐工具: 数据可视化库 使用 E…

vue实现类别

vue实现类别

Vue 实现类别的几种方法 在 Vue 中实现类别功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind:class 动态绑定类名 通过对象语法或数组语法动态绑定类名,根据条件添加或移…

实现.vue文件

实现.vue文件

创建.vue文件的基本结构 一个标准的.vue文件包含三个部分:模板(template)、脚本(script)和样式(style)。这种结构允许开发者在一个文件中管理组件的HTML、JavaScrip…

vue实现换行

vue实现换行

Vue 中实现换行的几种方法 在 Vue 中实现换行可以通过多种方式,具体取决于使用场景和需求。以下是常见的几种方法: 使用 HTML 的 <br> 标签 在模板中直接使用 <br…

vue实现单据

vue实现单据

Vue 实现单据功能的方法 使用 Vue 实现单据功能通常涉及表单设计、数据绑定、验证和提交等环节。以下是具体实现方案: 表单设计与数据绑定 使用 Vue 的 v-model 指令实现表单数据的双向…

vue实现注销

vue实现注销

实现用户注销功能 在Vue应用中实现用户注销功能通常涉及清除用户会话、重置应用状态并跳转到登录页面。以下是具体实现方法: 清除用户认证信息 使用Vuex或Pinia管理用户状态时,需在注销时重置存储…