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

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

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


  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.   
  8.     $(this).attr(“disabled”,”true”); //设置变灰按钮  
  9.     $(“#messageForm”).submit();//提交表单  
  10.     setTimeout(“$(‘#submit’).removeAttr(‘disabled’)”,3000); //设置三秒后提交按钮 显示  
  11.        
  12. })  
  13. </scritp></span>  
  14.   
  15. </span>  
<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

  第一种:

  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.   
  6. </form>  
<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>

 第二种:

  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>   
<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.net/101627.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c# taskscheduler使用场合_hbase shell put

    c# taskscheduler使用场合_hbase shell put这里记录下TaskScheduler的简单用法。使用场景:在使用Task的时候,大家都知道用TaskFactory.StartNew可以用来创建一个Task。这里如果创建10个,那么这10个Task就各自放飞直接运行了。一般情况下是没什么大问题,如果这10个中的每个Task非常耗CPU或者内存,而公司的产品又是非常考验配置成本(比如一体机,移动设备等),就需要让这10个Task按照一定要求执行,比如串行执行,从而节省资源、让机器还可以顺畅去干别的事情。Task…

    2022年10月11日
    2
  • python pandas数据匹配 merge函数

    python pandas数据匹配 merge函数python中pandas数据匹配常用merge函数,其实merge函数就类似于excel中的vlookuphlookuplookup,最近excel又出了一个逆天的xlookup函数,默默地推荐一下,嘿嘿转载自:https://www.cnblogs.com/stream886/p/6022049.html,感谢博主一定要看里面的图,很形象使用Pandas进行数据匹配本文转载…

    2022年5月4日
    216
  • 基于keras的手写数字识别_数字识别

    基于keras的手写数字识别_数字识别一、概述手写数字识别通常作为第一个深度学习在计算机视觉方面应用的示例,Mnist数据集在这当中也被广泛采用,可用于进行训练及模型性能测试;模型的输入为:32*32的手写字体图片,这些手写字体包含0~9数字,也就是相当于10个类别的图片模型的输出:分类结果,0~9之间的一个数下面通过多层感知器模型以及卷积神经网络的方式进行实现二、基于多层感知器的手写数字识别多层感知器的模型如下…

    2025年11月14日
    5
  • 单调栈算法详解_单调栈和单调队列

    单调栈算法详解_单调栈和单调队列单调栈算法详解单调栈使用模板stack<int>st;//此处一般需要给数组最后添加结束标志符,具体下面例题会有详细讲解for(遍历这个数组){if(栈空||栈顶元素大于等于当前比较元素){入栈;}else{while(栈不为空&&栈顶元素小于当前元素){栈顶元素出栈;更新结果;}入栈;}}或者简化

    2022年9月22日
    4
  • 数组去重的方法java_五种数组去重方法的性能比较「建议收藏」

    数组去重的方法java_五种数组去重方法的性能比较「建议收藏」为什么要写这篇文章之前参与面试一名外包程序员的时候,我要求他手写一个数组去重的方法,当时他使用了对象保存数值,通过查询去重。我表示表占用了空间,能不能只操作数组本身,减少空间占用。当时我想的是用indexOf和splice来操作数组,查询到index不等于i的时候,使用splice删除元素,之后自己跑了一遍发现函数执行时间非常长,所以想着研究一下效率比较高的去重方法。去重方法介…

    2022年6月18日
    40
  • MySQL 字符集 注意事项

    MySQL 字符集 注意事项utf8 unicode ci 与 utf8 general ci 区别 utf8 unicode ci 和 utf8 general ci 对中英文来说没有实质的差别 utf8 general ci 校对速度快 但准确度稍差 utf8 unicode ci 准确度高 但校对速度稍慢 若数据库中有德语 法语或者俄语需求 需使用 utf8 unicode ci 其他情况用 utf8 general ci 即可 如果你想使用 gb2312 编码 那么建议你使用 latin1 作为数据表的默认字符集 这样就能直

    2025年12月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号