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

news2024/9/25 9:31:25

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: '',
})

进入页面时效果:
在这里插入图片描述
选择时:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/798070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HuntingNFT 全新玩法引爆市场,GameFi掘金新热土?

“HuntingNFT v2 版本推出后&#xff0c;全新上线的驻守玩法、献祭玩法正在为玩家带来十分可观且持续的收益&#xff0c;其正在成为 GameFi 掘金的新热土。” 在经历了 2021 年的短暂狂欢后&#xff0c;随着 2022 年年初市场遇冷转熊&#xff0c;GameFi 市场也开始不断降温。根…

IDEA live templates

surround 在SQL的xml里 可以修改变量 官方文档 CDATA not null <if test"$SELECTION$ ! null and $SELECTION$ ! "> and $VAR1$ #{$SELECTION$} </if>not null like mysql <if test"$SELECTION$ ! null and $SELECTION$ ! "> and…

Gitlab 备份与恢复

备份 1、备份数据&#xff08;手动备份&#xff09; gitlab-rake gitlab:backup:create2、备份数据&#xff08;定时任务备份&#xff09; [rootlocalhost ]# crontab -l 00 1 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create 说明&#xff1a;每天凌晨1点备份数据…

WebDAV之π-Disk派盘 + POJO

POJO 支持WebDAV方式连接π-Disk派盘。 Pojo文档管理是一种简单而强大的文档管理方法,利用Java编程语言的普通对象来管理文档。你可以使用Pojo对象来表示和操作文档的属性、内容和元数据。这种面向对象的方法使得文档管理更加灵活和可扩展。 结合派盘,Pojo文档管理变得更加…

按是否手工执行测试的角度划分:手工测试、自动化测试

1.手工测试&#xff08;Manual testing&#xff09; 手工测试是由人一个一个的输入用例&#xff0c;然后观察结果&#xff0c;和机器测试相对应&#xff0c;属于比较原始但是必须的一个步骤。 由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。 更适用针对深度…

炎热夏天,VR全景让你宅家也能逛风景

夏天的快乐都是空调给的&#xff0c;进入三伏天气以来&#xff0c;连续的高温让人坐着都是一身汗&#xff0c;尤其是活泼好动的小朋友们&#xff0c;不出去玩那是不可能的。不妨改变下策略&#xff0c;让小朋友们转战线上&#xff0c;还能学习知识&#xff0c;是不是美滋滋呢~~…

JS逆向之猿人学爬虫第20题-wasm

文章目录 题目地址sign参数分析python算法还原往期逆向文章推荐题目地址 https://match.yuanrenxue.cn/match/20第20题被置顶到了第1页,题目难度 写的是中等 算法很简单,就一个标准的md5算法,主要是盐值不确定, 而盐值就在wasm里面,可以说难点就在于wasm分析 sign参数分…

history命令:显示命令执行时间

1.修改配置文件 vim /etc/profile 添加内容 export HISTTIMEFORMAT"%Y-%m-%d %H:%M:%S " ​ #注意&#xff1a;在末尾的“引号”与“S”之间&#xff0c;加入一位空格&#xff0c;将日期时间和历史命令用空格相隔开来。 你也可以换一种清晰的形式&#xff0c;效果…

java线程中的常见方法(详解)

方法简介 方法名 功能 说明 start() 启动一个新线程&#xff0c;在新的线程运行 run 方法中的代码 start 方法只是让线程进入就绪&#xff0c;里面代码不一定立刻运行&#xff08;CPU 的时间片还没分给它&#xff09;。每个线程对象的start方法只能调用一次&#xff0c;如…

程序员必读十大电子书

程序员必读十大电子书 云原生架构白皮书 2022 版程序员面试宝典Java 工程师成神之路微服务治理技术白皮书Java 开发手册&#xff08;嵩山版&#xff09;必致&#xff08;BizDevOps&#xff09;白皮书 2022Elasticsearch 全观测技术解析与应用&#xff08;构建日志、指标、APM 统…

Tik Tok海外公会是什么?

在数字社交媒体领域&#xff0c;TikTok已成为全球性的热门应用之一&#xff0c;印尼市场也不例外。作为全球第四人口最多的国家&#xff0c;印尼的年轻人口众多&#xff0c;是一个极具潜力的市场。对于希望在印尼市场进行TikTok公会申请的机构来说&#xff0c;了解市场发展趋势…

NLP实验案例100个(1-5)

实验一 array数组&#xff08;01&#xff09; 一、实验目的及要求 1.安装numpy环境&#xff0c;掌握基本的数组知识以及操作。 二、实验设备&#xff08;环境&#xff09;及要求 开发环境&#xff1a;jupyter notebook 开发语言以及相关的库&#xff1a;python开发语言、nu…

微信小程序:授权登录获取手机号及获取基本信息等

1、授权获取code&#xff0c;换取open_id wx.login({success(res) {console.log(res.code)if (res.code) {//调自己后台接口换取open_id}} })微信文档 2、获取手机号 1&#xff09;需要将 button 组件 open-type 的值设置为 getPhoneNumber&#xff0c;当用户点击并同意之后…

大采购3.0,打造企业采购数智化的韧性变革!

大采购3.0&#xff0c;深化采购全链路管控&#xff0c;聚焦数智化运营、智慧化监管、个性化需求适配、一体化协同、稳定可靠、安全可信、企业级服务七大核心基因&#xff0c;围绕采购管理、供应商全生命周期管理、人工智能深入应用、易用性、交付能力等方面进行了全面升级和优化…

利用MATLAB制作DEM山体阴影

在地理绘图中&#xff0c;我们使用的DEM数据添加山体阴影使得绘制的图件显得更加的美观。 GIS中使用ArcGIS软件就可以达到这一目的&#xff0c;或者使用GMT&#xff0c;同样可以得到山体阴影的效果。 本文提供了一个MATLAB的函数&#xff0c;可以得到山体阴影。 clear all;c…

【代码随想录day21】二叉搜索树的最近公共祖先

题目 思路 解题的关键是知道自顶向低递归遍历&#xff0c;第一次遇到root在p和q的区间中时&#xff0c;则root就是p和q的最近公共祖先节点。 递归法 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val x # …

后端性能测试的类型

目录 性能测试的类型 负载测试(load testing) 压力测试(Stress Testing) 可扩展性测试( 尖峰测试(Spike Testing) 耐久性测试(Endurance Testing) 并发测试(Concurrency Testing) 容量测试(Capacity Testing) 资料获取方法 性能测试的类型 性能测试&#xff1a;确定软…

QT:手动实现登录框

要求&#xff1a; 1、登录窗口更改标题、图标 2、设置固定尺寸、并给定一定的透明度 #include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {this->setFixedSize(800,650); //设置固定尺寸qDebug()<<this->windowT…

新一代分布式任务调度框架

概述 PowerJob是新一代分布式任务调度与计算框架&#xff0c;支持CRON、API、固定频率、固定延迟等调度策略&#xff0c;提供工作流来编排任务解决依赖关系&#xff0c;能让您轻松完成作业的调度与繁杂任务的分布式计算。 为什么选择PowerJob&#xff1f; 当前市面上流行的作…

盒式外观安装比例放大器

比例阀放大器是一种电子放大器&#xff0c;可以将微小的电信号放大成较大的电信号。比例阀放大器通常用于工业控制系统中&#xff0c;其特点是可以调节控制参数&#xff0c;从而可以控制系统的行为。比例阀放大器有板式、盒式、插头式和集成式四种类型&#xff0c;每种类型都有…