当前位置:首页 > VUE

vue单选按钮代码实现

2026-01-22 08:30:47VUE

基础单选按钮实现

使用v-model绑定数据到单选按钮组:

<template>
  <div>
    <input type="radio" id="option1" value="option1" v-model="selectedOption">
    <label for="option1">选项1</label>

    <input type="radio" id="option2" value="option2" v-model="selectedOption">
    <label for="option2">选项2</label>

    <p>选择的是: {{ selectedOption }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: ''
    }
  }
}
</script>

使用组件库实现

Element UI实现方式:

<template>
  <el-radio-group v-model="radio">
    <el-radio :label="1">选项A</el-radio>
    <el-radio :label="2">选项B</el-radio>
  </el-radio-group>
</template>

<script>
export default {
  data() {
    return {
      radio: 1
    }
  }
}
</script>

动态渲染单选按钮

根据数组动态生成单选按钮:

<template>
  <div v-for="option in options" :key="option.value">
    <input 
      type="radio" 
      :id="option.value" 
      :value="option.value" 
      v-model="selectedOption"
    >
    <label :for="option.value">{{ option.label }}</label>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: '',
      options: [
        { value: 'opt1', label: '红色' },
        { value: 'opt2', label: '蓝色' },
        { value: 'opt3', label: '绿色' }
      ]
    }
  }
}
</script>

表单验证集成

结合Vuelidate进行表单验证:

<template>
  <form @submit.prevent="submit">
    <div v-for="option in options" :key="option.value">
      <input
        type="radio"
        v-model="$v.selectedOption.$model"
        :value="option.value"
        :id="option.value"
      >
      <label :for="option.value">{{ option.label }}</label>
    </div>
    <div v-if="$v.selectedOption.$error">必须选择一个选项</div>
    <button type="submit">提交</button>
  </form>
</template>

<script>
import { required } from 'vuelidate/lib/validators'

export default {
  data() {
    return {
      selectedOption: null,
      options: [
        { value: 'yes', label: '是' },
        { value: 'no', label: '否' }
      ]
    }
  },
  validations: {
    selectedOption: { required }
  },
  methods: {
    submit() {
      this.$v.$touch()
      if (!this.$v.$invalid) {
        // 提交逻辑
      }
    }
  }
}
</script>

样式自定义

使用CSS自定义单选按钮样式:

<template>
  <div class="radio-container">
    <label v-for="option in options" :key="option.value" class="radio-label">
      <input 
        type="radio" 
        v-model="selectedOption"
        :value="option.value"
        class="radio-input"
      >
      <span class="radio-custom"></span>
      {{ option.label }}
    </label>
  </div>
</template>

<style>
.radio-input {
  position: absolute;
  opacity: 0;
}

.radio-custom {
  position: relative;
  display: inline-block;
  width: 20px;
  height: 20px;
  background-color: #fff;
  border: 2px solid #ccc;
  border-radius: 50%;
  margin-right: 10px;
}

.radio-input:checked + .radio-custom {
  background-color: #42b983;
  border-color: #42b983;
}

.radio-input:checked + .radio-custom::after {
  content: "";
  position: absolute;
  width: 10px;
  height: 10px;
  background: white;
  border-radius: 50%;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.radio-label {
  display: flex;
  align-items: center;
  margin-bottom: 10px;
  cursor: pointer;
}
</style>

vue单选按钮代码实现

标签: 单选按钮
分享给朋友:

相关文章

vue如何实现单选

vue如何实现单选

Vue 实现单选的方法 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定到同一个变量,确保同一时间只有一个选…

vue实现按钮位置

vue实现按钮位置

Vue 实现按钮位置调整方法 在 Vue 中调整按钮位置可以通过多种方式实现,以下是一些常见的方法: 使用 CSS 定位 通过 CSS 的定位属性(如 position、top、left、righ…

vue实现按钮弹窗

vue实现按钮弹窗

实现按钮弹窗的基本方法 在Vue中实现按钮点击触发弹窗功能,可以通过多种方式完成。以下是几种常见实现方法: 使用原生HTML和Vue指令 通过v-if或v-show控制弹窗显示状态,结合点击事件切换…

css图片按钮制作

css图片按钮制作

使用纯CSS创建图片按钮 通过CSS的background-image属性可以轻松将图片设置为按钮背景。关键点在于设置合适的尺寸、去除默认边框并添加交互状态: .image-btn { wid…

vue实现按钮加减

vue实现按钮加减

Vue 实现按钮加减功能 在 Vue 中实现按钮加减功能通常涉及以下步骤: 模板部分 <template> <div> <button @click="d…

vue实现动态路由按钮

vue实现动态路由按钮

Vue 实现动态路由按钮的方法 动态路由按钮的实现通常涉及权限控制,根据用户角色或权限动态显示或隐藏路由按钮。以下是几种常见方法: 基于路由元信息(meta)和v-if控制 在路由配置中添加权限标…