当前位置: 首页 > news >正文

手滑误操作? vue + Element UI 封装二次确认框 | 附源码

一诺最近在做后台管理系统时,遇到一个很常见但又容易被忽视的小问题:单选框切换时,用户一不小心点错,原有配置就没了,数据丢失,后悔也来不及。


你是不是也遇到过类似的场景?比如切换网络模式、切换支付方式、切换重要设置……
有时候,用户只是想点点看,结果页面直接切换,之前填的内容全没了,体验很糟糕。

1. 解决思路

其实,最简单的办法就是——切换前弹个确认提示,问一句“你确定要切换吗?”

功能拆解

我们想要的效果很简单:

  • 用户切换单选框时,弹出确认气泡
  • 用户点“确定”才真的切换
  • 用户点“取消”就啥也不变
  • 最好还能自定义提示文案、按钮、气泡位置

如果每个页面都手写一遍,既麻烦又容易出错。有没有现成的轮子?


有!一诺基于 ElementUI 二次封装了一个【ConfirmRadioGroup】组件,专门解决这个问题。

先看效果,如果有启发,记得点赞收藏哈

3. 组件介绍

ConfirmRadioGroup 是一个带确认提示的单选框组件,底层用的是 el-radio-group 和自研的气泡确认框。
它的特点:

  • 切换选项时自动弹出确认气泡,防止误操作
  • 支持自定义提示文案、按钮、图标、气泡位置
  • 可以指定哪些选项需要确认
  • 完全兼容原生单选框的用法,支持 v-model
  • 事件丰富,方便业务扩展

 

4. 基本用法

假如你有一个“支付方式”切换,选项有“支付宝”和“微信支付”。切换时需要用户确认。

 

<template><ConfirmRadioGroupv-model="payType"confirm-title="切换支付方式会清空已填写信息,确定要切换吗?"@change="onChange"><el-radio label="alipay">支付宝</el-radio><el-radio label="wechat">微信支付</el-radio></ConfirmRadioGroup>
</template>
<script>
import { ConfirmRadioGroup } from '@/components'export default {components: { ConfirmRadioGroup },data() {return { payType: 'alipay' }},methods: {onChange(val) {// 这里才真正切换console.log('支付方式切换为', val)}}
}
</script>

这里可以插入一张“支付方式切换弹窗”的截图
【截图3:支付方式切换弹窗】

5. 进阶玩法

5.1 只对部分选项弹窗

有时候,并不是所有切换都需要确认。比如只有切到“微信支付”才需要提示。

 

<ConfirmRadioGroupv-model="payType":confirm-values="['wechat']"confirm-title="切换到微信支付会清空支付宝信息,是否继续?"
><el-radio label="alipay">支付宝</el-radio><el-radio label="wechat">微信支付</el-radio>
</ConfirmRadioGroup>

5.2 自定义按钮和图标

你可以自定义按钮文案、颜色、图标样式,让提示更贴合业务。

<ConfirmRadioGroupv-model="status"confirm-title="确认要切换状态吗?"confirm-button-text="立即切换"confirm-button-type="danger"cancel-button-text="我再想想"confirm-icon-class="el-icon-delete"confirm-icon-color="#F56C6C":confirm-icon-style="{ fontSize: '18px', fontWeight: 'bold' }"
><el-radio label="active">激活</el-radio><el-radio label="inactive">停用</el-radio>
</ConfirmRadioGroup>

5.3 气泡位置随心选

气泡默认在下方(bottom),也可以放到上、左、右。

 

<ConfirmRadioGroupv-model="position"placement="right"confirm-title="切换位置会重新计算布局"
><el-radio label="left">左侧</el-radio><el-radio label="right">右侧</el-radio>
</ConfirmRadioGroup>

5.4 彻底关闭确认功能

有些场景你不想弹窗,直接加个 :enable-confirm="false" 就行。

<ConfirmRadioGroup v-model="mode" :enable-confirm="false"><el-radio label="mode1">模式1</el-radio><el-radio label="mode2">模式2</el-radio>
</ConfirmRadioGroup>

 

6.API事件说明

Props

参数

说明

类型

默认值

value / v-model

绑定值

string / number / boolean

''

disabled

是否禁用

boolean

false

size

尺寸

string

'medium'

text-color

激活时的文本颜色

string

'#ffffff'

fill

激活时的填充色和边框色

string

'#409EFF'

enable-confirm

是否启用确认提示

boolean

true

confirm-title

确认提示标题

string

'切换选项后将清空当前相关配置,确认继续操作吗?'

confirm-button-text

确认按钮文本

string

'确定'

cancel-button-text

取消按钮文本

string

'取消'

confirm-button-type

确认按钮类型

string

'primary'

confirm-icon-class

确认图标的 class 类名

string

'sec-icon-warning'

confirm-icon-color

确认图标颜色

string

'#E6A23C'

confirm-icon-style

确认图标的自定义样式

object

{}

placement

气泡位置

string

'top'

confirm-values

需要确认的值数组

array

[]

confirm-on-same

相同值时是否也显示确认

boolean

false

Events

事件名

说明

参数

change

选项改变时触发

(value)

confirm

确认切换时触发

({ oldValue, newValue })

cancel

取消切换时触发

({ oldValue, cancelValue })

7. 常见问题

  • Q:和原生 el-radio-group 用法一样吗?
    A:完全一样,支持 v-model、插槽、所有属性。
  • Q:可以只对某些选项弹窗吗?
    A:可以,配置 confirm-values 即可。
  • Q:会不会影响表单校验?
    A:不会,和普通单选框一样。
  • Q:支持响应式吗?
    A:支持,窗口大小变化会自动适配。

如果有用,记得点赞收藏哈

http://www.dtcms.com/a/279594.html

相关文章:

  • 基于SpringBoot+Vue的体育馆预约管理系统(支付宝沙盒支付、腾讯地图API、协同过滤算法、可视化配置、可视化预约)
  • JAVA并发——volatile关键字的作用是什么
  • 高并发点赞场景Synchronized、AtomicLong、LongAdder 和 LongAccumulator性能分析
  • Linux 系统管理基础教程
  • MyBatis 在执行 SQL 时找不到名为 name 的参数
  • PO类与分层架构
  • UI前端大数据可视化新实践:如何利用数据动画讲述数据背后的故事?
  • Redis高可用集群一主从复制概述
  • SSH 登录失败,封禁IP脚本
  • 理解Grafana中`X-Scope-OrgID`的作用与配置
  • JavaWeb与HTTP协议
  • 【FPGA】AXI总线协议
  • 李宏毅(deep-leraning)-四---梯度下降batch size
  • 品质童装好而不贵!百胜中台助力久岁伴稳步发展
  • 今日行情明日机会——20250714
  • openEuler系统串口文件手法压力测试及脚本使用说明
  • 破解 VMware 迁移难题:跨平台迁移常见问题及自动化解决方案
  • 我的第一个开源项目:SpringCloud电商前端Vue实战
  • AI驱动编程范式革命:传统开发与智能开发的全维度对比分析
  • 《解锁音频处理新姿势:探索Librosa的无限可能》
  • androidstudio 高低版本兼容
  • 量产技巧之RK3588 Android12默认移除导航栏状态栏​
  • imx6ull-系统移植篇5——U-Boot 顶层 Makefile 简析
  • 蓝象智联入选江苏金融数据开发主体:隐私计算如何赋能公共数据价值释放?
  • Java :编译器的占位符 T#1
  • 【PTA数据结构 | C语言版】字符串匹配算法
  • es的自定义词典和停用词
  • 天海电子闯上市:业绩增速骤降,“踩雷”合众汽车,存坏账风险
  • Go从入门到精通(22) - 一个简单web项目-统一日志输出
  • 5.浏览本地文件获取路径与文件名称 C#例子 WPF例子