按钮限制:避免重复或多次点击事件

需求说明

相信大家在提交表单给后端时,时不时由于网络延迟的问题导致,重复提交表单,进而网络好了,就多了好几条数据。那么到底该如何解决这种问题呢!下面小编带你一起来探索与解决

探索

以前小编以为这个是后端责任,为何呢?因为后端没有限制一个时间段之内最多请求几次,想着我前端只要把参数(值)传给他就行,后来越想不对,这是它后端该怎么处理这个 问题不关我们的事,但我们前端也应该有自己的解决办法。

想到这,我们可以在事件上做处理,只要提交了,先不管提交成功还是提交失败,只要你一提交,我就关闭弹框,这样就避免了一个表单你多次提交,是的,这样是可以解决,但这种只有是表单是单独出来的组件才可以;想到这,还是不美,这对客户的体验感不好:为啥会这样说呢?如果还是网络延迟问题,提交了,弹框关闭了,数据没有自动刷新出来(一般是成功后,自动调用获取数据的接口或者刷新界面),这里就万一会给客户造成错误的引导,心里想:“刚才没有添加成功”,然后,客户又会继续之前的操作。避免了这个错误,但又引起了另一个错误,得不偿失啊!!!

话说换一个角度考虑,表单和展示数据的表格在一个界面(一个组件,也就是一个vue文件里),还是没有存根本上解决这个问题。

不行,继续想…

。。。。

那如果直接从按钮中控制呢,是不是可以?

嗯!!

可以的!!

那该怎么弄呢????

可不可以让它点击提交按钮后,按钮禁用几秒中呢

突然想起小编之前写过一篇给按钮加时间限制文章,话不多说,直接放链接

解决方法1:加时间限制

按钮+时间限制 <—链接处

这个方法小编觉得还是比较麻烦,那还有什么更简单的方法么???

继续陷入深思中…

有心不负功夫人

有,想到了,请看下面的方法2

解决方法2:根据el-button自带属性(loading)来限制

最好的解决方法就是给按钮加一个状态,如,提交后,后端未响应,显示“提交中”,这个也可以避免重复或多次提交(这样也避免了多次提交,只有上次的请求完成后,才会对按钮进行解放)
话不多说,上代码

<el-button type="primary" size="small" @click="submit()" :loading="loading">{{ submits }}</el-button>

loading是el-button特有的属性
定义:

<script>
	data(){
		return {
			submits: '提交',
             loading: false,
		}
	}
</script>
methods:{
    submit(){
        //this.submits = "提交中"
        //this.loading = true
        //  #这里的作用就是只要你点击“提交”事件,按钮立马变换状态和文字,不管后端接口访问成功还是失败,只要没有响应还是保持当前状态,这样就避免了重复或者多次提交
        this.$http.axios("url--",params,config).then(res=>{
            //this.submits = "提交中"
            //this.loading = true
            // # 这里是访问了接口,但没有响应,状态为“提交中”,原理是一样,只不过是在不同位置体现而已
            if(res.data.code === 200){
                this.submits = "提交"
                this.loading = false
            }else{
                this.submits = "提交"
                this.loading = false
            }
        })
    }
}

好了,到这里就结束了,同行大佬有什么更好的思路,欢迎评论区交流
觉得小编这篇文章写的可以,麻烦给小编点个赞,让更多的人看到

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 页面特效 1.1 HTML页面反向显示 1.2 页面自动最大化 1.3 页面自动刷新 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 1.7 保护自己的网页不被放入框架 1.8 打印页面的出错原因 1.9 当前网页调用其他网页 1.10 倒计时载入页面 1.11 定义网页的关键字 1.12 进入页面同时弹出欢迎对话框 1.13 禁止网页另存 1.14 禁止页面加入缓存 1.15 离开页面时弹出对话框 1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 判断网页加载完毕 1.23 嵌入网页的播放器 1.24 设置指定网页为主页 1.25 使用JavaScript传递页面参数 1.26 页面被冻结 第 2章 按钮特效 2.1 页面刷新按钮 2.2 按回车调用登录按钮 2.3 动态创建按钮 2.3 平面按钮 2.4 按钮的嵌入效果 2.5 按钮改变状态栏信息 2.6 定义按钮的热键 2.7 取得控件的绝对位置 2.8 删除时的确认提 示 2.9 按钮只能单击一次 2.10 防止按钮连击 2.11 图片式按钮 2.12 文字显示在按钮底部 2.13 选择不同的列表项就显示不同的按钮 2.14 使用按钮控制文本渐变 2.15 翻页效果的公告栏 2.16 动态设置控件的事件 第3章 字符串文本和输入框特效 3.1 只带下划线的输入框 3.2 限定文本框可输入字符数 3.3 文字过长的省略号 3.4 输出26个英文字母 3.5 首字母变为大写 3.6 textarea自适应文字行数 3.7 禁止文本框的拷贝和粘贴 3.8 控制两个文本框只输其一 3.9 判断编辑器中是否包含特殊字符 3.10 判断文本中回车的数量 3.11 判断字符串中有多少汉字 3.12 去除字符串的前后空格 3.13 刷新时清空所有文本框 3.14 随意改变大小的文本框 3.15 文本框的自动全选 3.16 文本框滚动导航 3.17 按钮获取焦点 3.18 文本框获取焦点弹出下拉框 3.19 文本框简单的单击效果 3.20 文字的打字效果 3.21 文字滚动 3.22 文字滑动 3.23 文字跳动特效 3.24 荧光效果的文本 3.25 文字逐个闪亮-霓虹灯效果 3.26 旋转式的变色文字特效 3.27 黑客帝国中的字符下落效果 3.28 获取表单中文本框的个数 3.29 光标停在文字最后 3.30 分行取textarea中的值 3.31 自动插入文本 3.32 选取textarea的指定行 3.33 文本放大镜 3.34 文本框的默认输入法 3.35 文本框显示网页中选中的内容 3.36 文字的垂直滚动 3.37 文字幻灯片 3.38 随机动态文字效果 3.39 实现textarea的自动滚动 3.40 使用marquee实现文字上下滚动 3.41 类似安装效果的textarea滚动 3.42 始终显示在最顶端的文本 3.43 JavaScript过滤SQL注入字符 3.44 textarea内实现行的翻页效果 3.45 textarea中的文本插入 3.46 查找两段文本中相同的词句 3.47 自动保存网页输出的文本 3.48 文本编辑器 第4章 鼠标特效 4.1 禁用鼠标右键 4.2 使鼠标滚轮失效 4.3 状态栏显示鼠标位置 4.4 点击鼠标右键到指定页 4.5 鼠标放到图片上会显示另外一张图片 4.6 鼠标形状定义大全 4.7 鼠标移入移出时颜色变化 4.8 跟随鼠标的文字 4.9 跟随鼠标的彩色文字 4.10 跟随鼠标的魔法文字 4.11 跟随鼠标的星星 4.12 跟随鼠标的旋转背景 4.13 图片跟随鼠标 4.14 围绕鼠标的文本 4.15 鼠标旁边的提示信息 4.16 鼠标移到下拉框时自动全部打开 4.17 checkbox鼠标移入移出的特效 第5章 层和框架的特效 5.1 div层提示效果 5.2 层自动滚动到最底端 5.3 div的自动滚动 5.4 div的折迭效果 5.5 圆角div 5.6 动态添加iframe框架 5.7 用层实现长文章分页 5.8 iframe自适应高度 5.9 类似MSN的消息提示 5.10 只打印iframe的内容 第6章 下拉列表特效 6.1 下拉框实现多选 6.2 实现两个select的同步 6.3 被选中的列表项下次不能再选 6.4 不带滚动条的select 6.5 从一个下拉列表往另一个下拉列表添加内容 6.6 改变列表项的上下顺序
2007年,针式PKM 对外发布V1.0版,2012年发布V9.6版,2013年发布V2013版,2015年发布V2015版。2015年4月17日改名为文档大师 1.版本兼容原则 新版本的针式PKM总是兼容旧版的知识库,即旧版软件创建的知识库可以自动升级到新版,无需任何转换。 2.Windows平台支持 支持从Windows XP、Win7、Win8、Windows Server2003/2008/2012等 3.Office支持 支持OfficeXP、Office2003/2007/2010/2013 ... 支持WPS Word 基本信息软件版本: 针式PKM V2015 软件类型:文档管理/笔记软件/知识管理软件 收费模式:Freemium 针式PKM的主要技术指标: 知识库支持文档数:>3万个文档,类型包括:Word、PDF、PPT、图片、安装文件、压缩文件等 搜索支持:文件名瞬间搜索、Word\PDF等文档内容的全文快速搜索 归类方法:分类、标签、多个文档关联、公式等 可运行于:XP、Win7、Win8、Win2003/2008/2012等Windows平台[1] 功能简介 1. 搜索 1.1和Everything一样快的文件名搜索,瞬间完成搜索 1.2 快速的全文搜索,可以搜索Word、PPT、Excel、PDF等各种文档中的内容 1.3 可以使用单个标签搜索,也可以使用多个标签组合过滤 2. 文档归类方法 文档可以按分类、标签、附件等各种方式进行归类整理 2.1 一个文档可以设置多个分类、多个标签 2.2 一个文档可以附加多个附件 3. 知识体系 知识体系可以随时修改,而不受文件打开影响 4. 收集资料 4.1导入已有的文件 4.2 监控文件夹文件变化 4.3使用模板创建 4.4使用Word收集网页等方式 4.5 从Windows资源管理器拖入等方式 5. 整理资料 5.1可以批量修改分类 5.2中转站可以缓存文档以附件到其它文档、分类中 6.复习与回顾 通过公式的方式,为文档提供按遗忘曲线进行复习和按周期进行回顾等功能 按个人知识管理的过程构建主菜单:知识体系、收集资料、整理资料、学习、工具等 版本更新 版本 V201519 更新时间:2015-04-28 1. 增加按分类、按标签搜索文档的功能 2. 公式增加分类范围、标签范围可选的功能 3. 拖入文件增加可拖入文件和文件夹功能,并可以在导入前进行预览 版本 V201517 更新时间:2015-04-17 针式PKM 更名为 文档大师 版本 V201501 更新时间:2015-01-06 1.可以快速预览500多种文档格式,方便大家测试使用。 并且主界面和知识点界面都支持 2.对遗忘复习曲线和定期回顾更好地支持,直接采用针式PKM资深用户懒猫的实践经验。 例:需要学习的A文档。 1.收集且精读完成后将“阅读进度”改为“复习0次”,表示进入复习曲线, 间隔1天后才会在“第一次复习”中看到! 2.改为”复习1次“,间隔3天后才会在“第二次复习”中看到 版本V2013[4] 更新时间:2013-05-20 1.知识点列表直接显示附件,可设置双击打开文档--在视图-->选项-->02知识库编辑 中设置 2.全文搜索功能完善 3.回收站功能完善,现在要清空才真正删除 4.列的宽度和顺序可以直接变更,只有变更列才需要进入“选择列...”画面 5.知识点列表支持按住ctrl多选等细节完善 6.更好的支持网盘备份 版本9.78[5] 更新时间:2012-11-22 1.增强附件搜索功能 2.组合搜索:支持像"A .pdf"搜索包括A内容的PDF文档 3.文件夹的文档数量的及时更新、准确性提升 4.修正文件夹显示顺序的一个Bug 5.在文档列表右键菜单,直接打开文档 6.支持屏幕剪贴的快捷键:ctrl+shift+T 这个功能是集成QQ拼音的,所以屏幕剪贴功能很不错 版本9.56[6]更新时间:2012-10-22 1、界面简化 2、多达45项地更新 3、增加反查文档的文件夹等新功能 版本9.36[7]更新时间:2012-03-29 主要增加和完善的功能有: 1、更容易养成及时文档归类的习惯:提供文件新增监控提示归类功能 2、容易管理阅读进度、重点摘要:更容易创建问答的记忆内容 3、更方便对 知识 进行深入搜索研究:知识点画面集成搜索框 版本9.08版[8]更新时间:2012-01-11 主要增加和完善的功能有: 1、支持华为网盘同步和备份 2、增加知识结构分析,有助于对知识是否系统化并有所侧重进行分析等 3、对问答学习进行完善 4、对标签功能进行完善,可直接输入关键字,并支持大量标签后快捷搜索等 5、对知识点列
在Java中,避免重复提交通常可以通过以下几种方式来实现: 1. 前端验证:在前端页面使用JavaScript进行验证,例如通过禁用提交按钮或者设置提交按钮只能点击一次来防止重复提交。 2. Token验证:在后端生成一个唯一的Token并将其存储在session或者cookie中,然后将该Token传递给前端,在每次提交请求时都携带该Token。后端在处理请求时先验证Token的有效性,如果验证通过,则处理请求并将Token标记为已使用,否则拒绝请求。 3. 幂等性设计:在设计接口时考虑使用幂等性操作,即多次执行该操作所产生的结果与执行一次相同操作的结果相同。这样即使用户重复提交相同的请求,也不会对系统产生副作用。例如,在数据库中插入数据时,可以使用唯一约束来防止重复插入。 4. 限制时间窗口:在接收到请求后,在一定时间窗口内记录下该请求的唯一标识(如IP地址、用户ID等),并将其存储在缓存或数据库中。在处理后续请求时,先检查是否在时间窗口内存在相同标识的请求,如果存在,则拒绝处理。 5. 使用状态机:在处理请求的过程中使用状态机来记录请求的状态,例如将请求状态保存在数据库中。当接收到新的请求时,先检查请求的状态,如果已经处理过,则拒绝请求。 这些方法可以单独使用,也可以结合使用,根据具体的业务需求选择合适的方式来避免重复提交。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值