Vue3 Radio单选切换展示不同内容实现代码

 更新时间:2023年07月28日 15:07:24   作者:键指江湖  
这篇文章主要介绍了Vue3 Radio单选切换展示不同内容,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Vue3 Radio单选框切换展示不同内容

环境:vue3+ts+vite+element plus
技巧:v-if,v-show的使用
实现功能:点击单选框展示不同的输入框

效果实现前的代码:

<template>
    <div class="home">
        <el-row :gutter="20" style="padding: 0 100px">
            <el-form>
                <el-col :span="24">
                    <el-form-item label="选项:">
                        <el-radio-group v-model="state.radio" class="ml-4">
                            <el-radio label="1" size="large">型号</el-radio>
                            <el-radio label="2" size="large">颜色</el-radio>
                        </el-radio-group>
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="型号:">
                        <el-input v-model="state.input" placeholder="请输入型号"/>
                    </el-form-item>
                    <el-form-item label="颜色:">
                        <el-input v-model="state.input2" placeholder="请输入颜色"/>
                    </el-form-item>
                </el-col>
            </el-form>
        </el-row>
    </div>
</template>
<script setup lang="ts">
import {reactive, ref} from "vue";
const isShow = ref(true)
const state = reactive({
    radio: '1',
    input: '',
    input2: '',
})
</script>
<style lang="scss" scoped>
.home {
  background: antiquewhite;
  height: 200px;
}
</style>

在这里插入图片描述

1.默认选项型号是选中的,型号输入框也是展示的,那么颜色输入框是需要隐藏,定义isShow,

<el-col :span="24">
    <el-form-item label="型号:" v-show="isShow">
        <el-input v-model="state.input" placeholder="请输入型号"/>
    </el-form-item>
    <el-form-item label="颜色:" v-show="!isShow">
        <el-input v-model="state.input2" placeholder="请输入颜色"/>
    </el-form-item>
</el-col>
//js
const isShow = ref(true)

此时,isShow是true,! isShow就是false了,显示如下

在这里插入图片描述

2.获取单选框选择的radio值。切换的时候下面输入框也要随之切换。定义@change事件,如果val=1,isShow的值是true,!isShow就是false,如果不是1,那肯定是2了,因为这里只有2个选项,val=2时,型号的 isShow是fasle,颜色的! isShow就是true

<el-radio-group v-model="state.radio" class="ml-4" @change="handleChange">
    <el-radio label="1" size="large" >型号</el-radio>
    <el-radio label="2" size="large" >颜色</el-radio>
</el-radio-group>
//js
const handleChange = (val: any) => {
    if (val == 1) {
        isShow.value = true
    } else {
        isShow.value = false
    }
}

在这里插入图片描述

完整代码如下

<template>
    <div class="home">
        <el-row :gutter="20" style="padding: 0 100px">
            <el-form>
                <el-col :span="24">
                    <el-form-item label="选项:">
                        <el-radio-group v-model="state.radio" class="ml-4" @change="handleChange">
                            <el-radio label="1" size="large" >型号</el-radio>
                            <el-radio label="2" size="large" >颜色</el-radio>
                        </el-radio-group>
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="型号:" v-show="isShow">
                        <el-input v-model="state.input" placeholder="请输入型号"/>
                    </el-form-item>
                    <el-form-item label="颜色:" v-show="!isShow">
                        <el-input v-model="state.input2" placeholder="请输入颜色"/>
                    </el-form-item>
                </el-col>
            </el-form>
        </el-row>
    </div>
</template>
<script setup lang="ts">
import {reactive, ref} from "vue";
const isShow = ref(true)
const state = reactive({
    radio: '1',
    input: '',
    input2: '',
})
const handleChange = (val: any) => {
    if (val == 1) {
        isShow.value = true
    } else {
        isShow.value = false
    }
}
</script>
<style lang="scss" scoped>
.home {
  background: antiquewhite;
  height: 200px;
}
</style>

至此,有没有发现 v-if 还没出现

改造

效果:进入页面是单选框默认没有选择,输入框是隐藏的,点击单选框才展示输入框思路:单选radio的值为0时,也就是刚进入页面radio单选框并没有选择,当radio有值时,对应的输入框显示。

此时 v-if 出场了,只要radio的值不为0,也就是radio必须有选择才出现输入框这块,但是radio的默认值是要改为0

<el-col :span="24" v-if="state.radio!=0">
    <el-form-item label="型号:" v-show="isShow">
        <el-input v-model="state.input" placeholder="请输入型号"/>
    </el-form-item>
    <el-form-item label="颜色:" v-show="!isShow">
        <el-input v-model="state.input2" placeholder="请输入颜色"/>
    </el-form-item>
</el-col>
//js
const state = reactive({
    radio: '0',
    input: '',
    input2: '',
})

进入页面时效果:

在这里插入图片描述

选择时:

在这里插入图片描述

到此这篇关于Vue3 Radio单选切换展示不同内容的文章就介绍到这了,更多相关Vue3 Radio单选切换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue常用指令V-model用法

    Vue常用指令V-model用法

    本篇文章主要介绍了Vue常用指令_V-model用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • vue项目配置代理如何解决跨域问题

    vue项目配置代理如何解决跨域问题

    这篇文章主要介绍了vue项目配置代理如何解决跨域问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Vue项目服务器部署之子目录部署方法

    Vue项目服务器部署之子目录部署方法

    在本文中我们给大家整理了关于Vue项目服务器部署之子目录部署方法和具体步骤,需要的朋友们参考下。
    2019-05-05
  • Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件

    Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件

    这篇文章主要介绍了Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • vue自定义指令添加跟随鼠标光标提示框v-tooltip方式

    vue自定义指令添加跟随鼠标光标提示框v-tooltip方式

    这篇文章主要介绍了vue自定义指令添加跟随鼠标光标提示框v-tooltip方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 部属vue项目,访问路径设置非根,显示白屏的解决方案

    部属vue项目,访问路径设置非根,显示白屏的解决方案

    这篇文章主要介绍了部属vue项目,访问路径设置非根,显示白屏的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 在Vue.js应用中实现分布式搜索和全文搜索

    在Vue.js应用中实现分布式搜索和全文搜索

    分布式搜索和全文搜索在现代应用程序中变得越来越重要,因为它们可以帮助用户快速查找和检索大量数据,Elasticsearch是一种强大的分布式搜索引擎,本文将介绍如何在Vue.js应用程序中实现分布式搜索和全文搜索,以及如何与Elasticsearch集成,需要的朋友可以参考下
    2023-11-11
  • 在vue项目中 实现定义全局变量 全局函数操作

    在vue项目中 实现定义全局变量 全局函数操作

    这篇文章主要介绍了在vue项目中 实现定义全局变量 全局函数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • vite+vue3+ts项目新建以及解决遇到的问题

    vite+vue3+ts项目新建以及解决遇到的问题

    vite是一个基于Vue3单文件组件的非打包开发服务器,它具有快速的冷启动,不需要等待打包操作,下面这篇文章主要给大家介绍了关于vite+vue3+ts项目新建以及解决遇到的问题的相关资料,需要的朋友可以参考下
    2023-06-06
  • Vue开发实现吸顶效果的示例代码

    Vue开发实现吸顶效果的示例代码

    这篇文章主要介绍了Vue开发实现吸顶效果的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论