当前位置:首页 > VUE

vue 复选框实现

2026-01-21 15:13:30VUE

实现基础复选框

在 Vue 中实现复选框可以通过 v-model 绑定到数据属性。创建一个布尔值数据属性用于存储复选框的状态:

<template>
  <div>
    <input type="checkbox" id="checkbox" v-model="checked">
    <label for="checkbox">{{ checked ? 'Checked' : 'Unchecked' }}</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>
    <input type="checkbox" id="orange" value="Orange" v-model="fruits">
    <label for="orange">Orange</label>
    <p>Selected fruits: {{ fruits }}</p>
  </div>
</template>

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

自定义复选框组件

创建一个可复用的自定义复选框组件:

<template>
  <label class="custom-checkbox">
    <input type="checkbox" v-model="internalValue" @change="handleChange">
    <span class="checkmark"></span>
    {{ label }}
  </label>
</template>

<script>
export default {
  props: {
    value: Boolean,
    label: String
  },
  data() {
    return {
      internalValue: this.value
    }
  },
  watch: {
    value(newVal) {
      this.internalValue = newVal
    }
  },
  methods: {
    handleChange() {
      this.$emit('input', this.internalValue)
    }
  }
}
</script>

<style>
.custom-checkbox {
  display: inline-block;
  position: relative;
  padding-left: 25px;
  cursor: pointer;
}
.custom-checkbox input {
  position: absolute;
  opacity: 0;
}
.checkmark {
  position: absolute;
  top: 0;
  left: 0;
  height: 18px;
  width: 18px;
  background-color: #eee;
}
.custom-checkbox:hover input ~ .checkmark {
  background-color: #ccc;
}
.custom-checkbox input:checked ~ .checkmark {
  background-color: #2196F3;
}
</style>

使用第三方组件库

对于更复杂的复选框需求,可以使用 UI 组件库如 Element UI 或 Vuetify:

Element UI 示例:

<template>
  <el-checkbox v-model="checked">Option</el-checkbox>
</template>

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

Vuetify 示例:

<template>
  <v-checkbox v-model="checked" label="Option"></v-checkbox>
</template>

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

处理复选框组验证

在表单中使用复选框时,可以结合 Vue 的表单验证库如 VeeValidate:

<template>
  <div>
    <input 
      type="checkbox" 
      v-model="terms" 
      v-validate="'required'" 
      name="terms"
    >
    <label>I agree to the terms</label>
    <span v-show="errors.has('terms')">{{ errors.first('terms') }}</span>
  </div>
</template>

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

vue 复选框实现

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

相关文章

vue实现中台

vue实现中台

Vue 实现中台系统的关键步骤 技术选型与基础搭建 使用 Vue 3(Composition API)或 Vue 2(Options API)作为前端框架,搭配 Vue Router 实现路由管理,V…

vue实现静态查询

vue实现静态查询

Vue 实现静态查询 在 Vue 中实现静态查询通常指不依赖后端接口,直接在前端处理数据筛选或搜索功能。以下是几种常见实现方式: 使用计算属性过滤数据 通过计算属性对静态数据进行筛选,适合简单查询场…

vue实现多级组件

vue实现多级组件

实现多级组件的基本结构 在Vue中实现多级组件通常涉及父子组件嵌套,通过props向下传递数据,通过$emit向上传递事件。多级组件的核心是递归或动态组件渲染。 <!-- 父组件 Paren…

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Refle…

vue实现冰墩墩

vue实现冰墩墩

使用 Vue 实现冰墩墩动画 通过 Vue 的动画特性和 SVG 技术,可以动态渲染冰墩墩的形象。以下是具体实现方法: 准备 SVG 素材 冰墩墩的形象通常由多个 SVG 路径组成,包括身体轮廓…

vue实现展开与收起

vue实现展开与收起

Vue 实现展开与收起功能 在 Vue 中实现展开与收起功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-show 或 v-if 控制显示 通过 Vue 的指令 v-show 或 v-if…