Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据

Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据

作者头像
全栈程序员站长
发布于 2022-06-29 10:24:55
发布于 2022-06-29 10:24:55
4.5K00
代码可运行
举报
运行总次数:0
代码可运行

表单提交时候我们应该控制提交按钮,不能点击多次进行数据的重复提交。要不然就会有冗余的重复的数据在系统中,造成系统出现数据垃圾。jQuery很简单的就可以实现对表单提交按钮控制,下面就是相关的例子和代码。

[html] view plain copy

print ?

  1. <form action=“${pageContext.servletContext.contextPath}/XXX/###” method=“post” id=“messageForm”>
  2. 姓名:<input name = “name” type=“text” />
  3. <button type=“button” id=“submit”>提交申请</button>
  4. </form>
  5. <script>
  6. $(“#submit”).click(function(){
  7. $(this).attr(“disabled”,”true”); //设置变灰按钮
  8. $(“#messageForm”).submit();//提交表单
  9. setTimeout(“$(‘#submit’).removeAttr(‘disabled’)”,3000); //设置三秒后提交按钮 显示
  10. })
  11. </scritp></span>
  12. </span>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<form action="${pageContext.servletContext.contextPath}/XXX/###" method="post" id="messageForm">
    姓名:<input name = "name" type="text" />
             <button type="button" id="submit">提交申请</button>
</form>
<script>
$("#submit").click(function(){

    $(this).attr("disabled","true"); //设置变灰按钮
    $("#messageForm").submit();//提交表单
    setTimeout("$('#submit').removeAttr('disabled')",3000); //设置三秒后提交按钮 显示
     
})
</scritp></span>

</span>

附:其他的实现方法,也使用了js

第一种:

[html] view plain copy

print ?

  1. <form name=fm method=“POST” action=“/”>
  2. <p>按钮变灰</p>
  3. name: <input type=“text” name=“name”/>
  4. <input type=“button” value=“提交” onclick=“javascript:{this.disabled=true;document.fm.submit();}”>
  5. </form>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<form name=fm method="POST" action="/">
<p>按钮变灰</p>
    name: <input type="text" name="name"/>
     <input type="button" value="提交" οnclick="javascript:{this.disabled=true;document.fm.submit();}">

</form>
代码语言:javascript
代码运行次数:0
运行
复制

第二种:

[html] view plain copy

print ?

  1. <form name=fm method=“POST” action=“/” >
  2. <input type=“submit” name=“Submit” value=“提交” id=“submitId” onclick=“submit();”>
  3. </form>
  4. <script language=“javascript”>
  5. function submit()
  6. {
  7. var submitId=document.getElementById(‘submitId’);
  8. submitId.disabled=true;
  9. document.fm.submit();
  10. setTimeout(“submitId.disabled=false;”,3000); //代码核心在这里,3秒还原按钮代码
  11. }
  12. </script>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<form name=fm method="POST" action="/" >
  <input type="submit" name="Submit" value="提交" id="submitId" οnclick="submit();">
</form>
<script language="javascript">
 function submit()
 {
 var submitId=document.getElementById('submitId');
 submitId.disabled=true;
 document.fm.submit();
 setTimeout("submitId.disabled=false;",3000); //代码核心在这里,3秒还原按钮代码
}
</script> 

前后代码进行控制,后台代码也要进行控制,这样子就可以确保万无一失了!

后台代码控制表单提交有一个好的办法就是使用session, 具体可以参考下面这篇博文:

JavaWeb学习总结(十三)——使用Session防止表单重复提交

http://www.cnblogs.com/xdp-gacl/p/3859416.html

其实后台控制表单重复提交的原理:

(1)在表单提交页面生成一个唯一的token;token可以保存在session中。(若使用了缓存,也可以保存在缓存中)

(2)提交的时候验证,后台首先验证token,验证通过,才可以进行提交操作;

(3)当表单数据提交成功(保存到数据库-持久化),然后删除session(缓存)中对应的token。

在页面中添加Token防止越权访问-也可做表单重复提交,使用的原理也是Token!

http://blog.csdn.net/chinawszjr/article/details/51096095

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101627.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年6月6,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
(防抖) 前后端防重复提交常用的那些方法
友儿
2023/10/21
9400
Blazor-表单提交的艺术:如何优雅地实现 (上)
下面我将从三个方面来说说Blazor的表单提交方法,从原始的HTML表单提交方法,到Blazor的两种模式的提交方法进行描述,供大家了解。
MaybeHC
2025/06/08
320
Blazor-表单提交的艺术:如何优雅地实现 (上)
【黄啊码】PHP如何防止重复提交
防抖(Debounce)是一种防止重复提交的策略,它通过延迟一定时间来合并连续的操作,以确保只执行一次。
黄啊码
2023/12/18
3610
From表单提交的几种方式 原
<body> <form action="https://my.oschina.net/u/3285916" method="get" name="formOne" id="formId"> name:<input type="text" name="name"> pwd:<input type="password" name="pwd"><br/> <input type="button" value="1提交" onclick="document.form
醉生萌死
2018/11/05
8380
React 新 hook:useFormStatus 使用详解
一个令人振奋的特性就是,在 React19 中,action 支持传入异步回调函数。
用户6901603
2024/05/28
4130
React 新 hook:useFormStatus 使用详解
python测试开发django-162.ajax 提交表单,防重复提交(beforeSend)
form 表单提交的时候,当快速点击提交按钮的时候,会触发多个请求过去,会导致重复添加。
上海-悠悠
2021/11/05
1.5K0
原生php实现自定义表单(基础类型)(特色:防止重复提交 防止输出空数据等等功能)
-- phpMyAdmin SQL Dump -- version 4.5.1 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: 2022-03-31 14:41:20 -- 服务器版本: 10.1.13-MariaDB -- PHP Version: 5.6.21 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!4010
贵哥的编程之路
2022/05/06
5720
原生php实现自定义表单(基础类型)(特色:防止重复提交 防止输出空数据等等功能)
form实现表单提交的各种方法(表单提交源码)
这种方法实际上是调用了一个javascript函数,使用javacript函数来提交表单,方法就非常多非常灵活了,比如可以把它加入到任意一个标签的onclick事件中:
全栈程序员站长
2022/08/01
6.2K0
javascript实现表单提交加密「建议收藏」
但有时候我们会出于安全角度考虑,给用户输入的密码进行加密,方法一就没办法解决这个问题,这时候我们同常会选择另一种方法,使用javaScript来进行表单提交,代码入下:
全栈程序员站长
2022/11/08
1.6K0
防止Web表单重复提交的方法总结
在Web开发中,对于处理表单重复提交是经常要面对的事情。那么,存在哪些场景会导致表单重复提交呢?表单重复提交会带来什么问题?有哪些方法可以避免表单重复提交?
编程随笔
2019/09/11
5K0
防止Web表单重复提交的方法总结
form表单重复提交,type=“button”和type=“submit”区别
公司测试提了一个项目后台在IE浏览器下(360,firefox就没问题)出现数据重复的问题,调试了好久终于发现问题所在,也不知道是谁写的代码,醉醉的。。。。
大道七哥
2019/09/10
1.7K0
JavaWeb防止表单重复提交的几种方式
(4)、ajax提交加锁 采用ajax方式提交表单时,设置一个布尔变量(true/false),当然其他类型变量也可以。初始时为true可以提交,在前端向服务器发出请求后,服务端响应结果没有回来之前将该值置为false,正常响应时再置为true。
全栈程序员站长
2022/08/04
2.5K0
django后台添加学生-jquery实现表单正则表达式验证,判断是否可以进行提交
打不着的大喇叭
2024/03/11
2000
django后台添加学生-jquery实现表单正则表达式验证,判断是否可以进行提交
【jquery Ajax 】form表单教学+评论案例
表单在网页中主要负责数据采集功能,HTML中的<form>标签,就是用于采集用户输入的信息,并通过<form>标签的提交操作,把采集到的信息提交到服务器端进行处理。
坚毅的小解同志的前端社区
2022/11/28
2.3K1
【jquery Ajax 】form表单教学+评论案例
form表单提交的几种方式
完成后启动项目 并访问http://localhost:8080/query.html 输入用户名和密码
全栈程序员站长
2022/07/21
7K0
form表单提交的几种方式
解决分布式表单重复提交问题
3.1 前端解决办法:通过前端的方法将提交按钮变灰。对于前端的办法这里就不做演示了,因为前端的控制虽然能够防止数据的重复提交但是治标不治本。这里主要介绍第二种方法。
林老师带你学编程
2019/05/25
7820
常见的Form表单提交方式
在进行项目编程的时候,我们难免会去编写一些简单的前端页面. 而编写前端页面就力不开 form表单的支持. 下面就form表单的提交方式进行如下探寻
时间静止不是简史
2020/07/25
3.7K0
javascript当中表单提交(空格提交的问题)
4.表单提交(空格提交的问题) 例 4.1(form.submitIEFF.html) <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <script language=javascript> function check() { var form = document.getElementById("regForm"); if (form.user.value == "") { alert("用户名不能为空!"); } else { form.submit(); } } </script> <form method=post id="regForm" action="jsp1.jsp"> 用户<input type="text" name="user"/><br> <INPUT TYPE="button" onclick="check();" id="regBut" value="提交"/> </form> 以上例子很好,但有个问题,当光标放在文本框里时,即使空格,回车也会提交。不信你试试,浏览器(IE和火狐)都这样。下面给出解决办法。 例 4.1_a <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <script language=javascript> function check() { var form = document.getElementById("regForm"); if (form.user.value == "") { alert("用户名不能为空!"); } else { form.submit(); } } </script> <form method=post id="regForm" action="jsp1.jsp"> 用户<input type="text" name="user" onkeydown="if(event.keyCode==13) return false;"/><br> <INPUT TYPE="button" onclick="check();" id="regBut" value="提交"/> </form> 或者用下面的例子,里面用了onSubmit,只要提交,它就会被执行。
马克java社区
2019/10/17
1.5K0
javascript当中表单提交(空格提交的问题)
事件绑定(onsubmit)表单提交
说明: 上述通过表单提交的方式为GET提交,在后续的内容中我们会详细讲解,GET与POST之间的区别。
GeekLiHua
2025/01/21
1190
事件绑定(onsubmit)表单提交
PHP-表单提交数据的两种方式
1.3 表单提交数据的两种方式 1.3.1 两种方式 1、get 2、post <form method="post" action=""></form> <form method="get" a
cwl_java
2020/03/26
2.2K0
推荐阅读
相关推荐
(防抖) 前后端防重复提交常用的那些方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验