手滑誤操作? 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.pswp.cn/web/89375.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89375.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89375.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

力扣刷題367——有效的完全平方數

力扣刷題367——有效的完全平方數&#xff08;69的相似題&#xff09; 題目&#xff1a; 給你一個正整數 num 。如果 num 是一個完全平方數&#xff0c;則返回 true &#xff0c;否則返回 false 。 完全平方數 是一個可以寫成某個整數的平方的整數。換句話說&#xff0c;它可以…

kubernetes架構原理與集群環境部署

kubernetes架構原理與集群環境部署概述為什么需要 KubernetesKubernetes 帶來的挑戰kubernetes架構解析master 節點的組件(1)API server(2)scheduler(3)Controller Manager(4)etcdNode 節點包含的組件(1)容器運行時(2)kubelet(3)kube-proxy代理kubernetes 網絡插件(1)Flannel 網…

Python爬蟲實戰:Requests與Selenium詳解

目錄 一 網絡爬蟲的了解 1 爬蟲庫 urllib庫 requests庫 scrapy庫 selenium庫 2 注意&#xff01;&#xff01;&#xff01; 二 requests庫 1 request庫的安裝 2 認識網頁資源 3 獲取網頁資源 4 小案例 5 代理服務器 三 selenium 1 準備工作 2 應用 3 實例 一 網…

什么是樂觀鎖?什么是悲觀鎖?

&#x1f512; 深入淺出&#xff1a;樂觀鎖 vs 悲觀鎖終極對決&#xff01;面試必考知識點詳解 各位CSDN的小伙伴們好呀&#xff01;&#x1f44b; 我是雪碧聊技術&#xff0c;今天給大家帶來高并發編程中的核心概念——樂觀鎖與悲觀鎖的深度解析&#xff01;&#x1f4bb; 無論…

HTML前端性能優化完整指南

圖片優化&#xff1a;性能優化的重中之重 重新審視圖片的必要性 在開始優化之前&#xff0c;首先需要思考一個根本問題&#xff1a;要實現預期的視覺效果&#xff0c;真的需要使用圖片嗎&#xff1f; 隨著Web技術的快速發展&#xff0c;許多以往只能通過圖片實現的效果&…

數據煉金術:用Python做智能數據整理員

數據煉金術&#xff1a;用Python做智能數據整理員 解鎖自動化魔法&#xff1a;文件批量重命名Excel智能清洗數據凈化全流程實戰 一、數據整理的困境與破局之道 你是否面臨這些數據噩夢場景&#xff1f; &#x1f9e9; ??混亂文件目錄??&#xff1a;最終版_報告_V4(1).doc…

HTML基礎P1 | HTML基本元素

HTML標簽標簽名放在<>中&#xff0c;如<body>大部分標簽成對出現&#xff0c;如<h1>為開始標簽&#xff0c;</h1>為其對應的結束標簽&#xff0c;少數標簽只有開始標簽&#xff0c;如換行標簽<br/>&#xff0c;成為"單標簽"有的標簽中…

LVS集群搭建

集群是為了解決某個特定問題將多臺計算機組合起來形成的單個系統知識點&#xff1a;1.關鍵術語&#xff1a;VS&#xff1a;Virtual Server&#xff08;調度器&#xff09;RS&#xff1a;Real Server&#xff08;真實服務器&#xff09;CIP&#xff1a;Client IP&#xff08;客戶…

吳恩達《AI for everyone》第一周課程筆記

課程的核心目標&#xff1a;- AI是什么&#xff1f; - AI能做什么&#xff1f; - AI最擅長什么類型的任務&#xff1f; - AI怎么做決策&#xff1f; - 企業為什么需要AI戰略&#xff1f;導航Machine Learning 機器學習> 最常見的機器學習類型&#xff1a; > 人工智能中最…

iOS App 電池消耗管理與優化 提升用戶體驗的完整指南

在當今智能手機的使用中&#xff0c;電池壽命和續航能力是用戶選擇App時的重要考慮因素之一。iOS設備的電池管理功能較為封閉&#xff0c;這也讓開發者、產品經理以及普通用戶對于App的電池消耗有時無法全面了解。而如果你的App因電池消耗過快而遭到用戶卸載&#xff0c;無論功…

關于用git上傳遠程庫的一些常見命令使用和常見問題:

克隆遠程庫gitee到本地用命令git clone git clone https://gitee.com/automated-piggy-senior/20250717-test.gitLinux/macOS 終端&#xff1a; 執行 touch readme.txt&#xff08;創建空文件&#xff09;&#xff0c;或 echo "這是說明文件" > readme.txt&#…

想刪除表中重復數據,只留下一條,sql怎么寫

PostgreSQL 方法: DELETE FROM tbl_case_model WHERE id NOT IN (SELECT MIN(id) -- 保留id最小的記錄FROM tbl_case_modelGROUP BYcolumn1, -- 替換為實際重復列名column2, -- 繼續添加重復列... -- [所有需要比較的列] );因為我這次遇到的情況比較特殊&#xff0…

微服務中token鑒權設計的4種方式

1. JWT鑒權 「概述」&#xff1a;JWT是一種用于雙方之間安全傳輸信息的簡潔的、URL安全的令牌標準。它基于JSON格式&#xff0c;包含三個部分&#xff1a;頭部&#xff08;Header&#xff09;、負載&#xff08;Payload&#xff09;和簽名&#xff08;Signature&#xff09;。J…

nodejs搭建

1.創建一個空文件夾&#xff0c;在vscode中打開 2.執行命令開啟package文件 npm init -y3.設置根目錄文件app.js 先執行 npm install express 命令安裝 express 模塊 執行 npm install cors 命令安裝 cors 模塊 // app.js const express require(express) const app express…

frp內網穿透(二)

frp內網穿透&#xff08;二&#xff09; 前言 前篇內網穿透 上面一文中已描述如何安裝frp進行內網穿透&#xff0c;并配置ssh穿透連接內網服務器&#xff0c;本篇主要介紹如何配置web服務 使用場景 A服務器為公網服務器&#xff0c;B服務器為家庭中內網服務器&#xff0c;且B…

Spring 應用中 Swagger 2.0 遷移 OpenAPI 3.0 詳解:配置、注解與實踐

從 Swagger 2.0 到 OpenAPI 3.0 的升級指南 為什么升級 OpenAPI 3.0提供了更強大的功能、更簡潔的配置和更好的性能&#xff0c;同時保持了與 Swagger 2.0 的基本兼容性。本文將詳細介紹升級的各個步驟&#xff0c;并提供代碼示例。 1. 依賴管理的變化 Swagger 2.0 依賴配置 &l…

用 Flink CEP 打造實時超時預警:從理論到實戰

目錄 1. Flink CEP 是什么?為什么它能讓你的數據“開口說話”? 2. 超時預警的業務場景:從電商到物聯網 3. Flink CEP 超時機制的核心原理 3.1 模式匹配與時間窗口 3.2 超時事件的處理 3.3 事件時間與水位線 3.4 核心組件一覽 4. 實戰案例:電商訂單超時預警 4.1 準備…

Rocky Linux 9 源碼包安裝php7

Rocky Linux 9 源碼包安裝php7大家好&#xff01;我是星哥。盡管現在 PHP 版本已迭代至 8.x&#xff0c;但有時為了兼容遺留系統或特定應用需求&#xff0c;我們仍需部署特定版本的 PHP。最主要的是之前的項目采用的PHP7.3&#xff0c;未來兼容舊的項目&#xff0c; 今天&#…

uniapp+vue3+鴻蒙系統的開發

前言&#xff1a; uniappvue3鴻蒙系統的開發。 實現效果&#xff1a; 鴻蒙pad端真機測試效果-下面是正常的日志效果 實現步驟&#xff1a; 1、安裝鴻蒙的開發工具&#xff0c;點擊安裝&#xff0c;注意版本不能太舊了 deveco-studio 2、下載下來是個壓縮包&#xff0c;解壓后…

【C++類和對象解密】面向對象編程的核心概念(下)

之前我們了解到構造函數是在對象實例化之時對對象完成初始化工作的一個函數。在我們不寫時&#xff0c;編譯器會自動生成構造函數。構造函數有一些特點&#xff0c;比如&#xff0c;他對內置類型不做處理&#xff0c;對自定義類型的成員會去調用其自身的構造。我們上篇文章還提…