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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hql删除mysql语句_如何使用delete语句删除数据

    hql删除mysql语句_如何使用delete语句删除数据如何使用delete语句删除数据发布时间:2021-01-1510:57:41来源:亿速云阅读:83作者:小新栏目:数据库这篇文章主要介绍如何使用delete语句删除数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!怎么使用delete语句删除数据?创建一个临时表,用于演示sqlserver语法中delete删除的使用方法IFOBJECT_ID(‘tempdb..#tb…

    2022年6月16日
  • 罗永浩欠六个亿脱口秀_罗永浩直播带货视频

    罗永浩欠六个亿脱口秀_罗永浩直播带货视频做直播赚钱,跟做其它所有合法工作赚钱一样,一样可以选择干干净净的赚钱。而越假装不在乎钱,就越不会去赚钱,所以她在30岁时,自己撕掉那块遮羞布,拼命赚钱,过积极的生活。站街上一天8小时,赚80元,可80元卖5盒明信片就有了啊。提及这段经历,就是想说,当你真的开始在乎钱,真的想赚更多钱时,你真的能找到各种办法。这个社会的很多人,有些病态,自己背着房贷,猪肉排骨都舍不得大口吃,还不努力赚钱,甚至还不好意…

    2022年9月21日
  • 零基础学习3dmax建模有这4个技巧!你都知道?小白学习必备

    零基础学习3dmax建模有这4个技巧!你都知道?小白学习必备3dmax建模方法有很多,大致可分为内置建模模型、复合对象建模、二维图形建模、网格建模、多边形建模、面片建模和NURBS建模。确切地说,它们不应该有固定的分类,因为它们可以交互使用。【3D建模学习资料领取方式见文末】一、内置建模模型这个是3dMax中自带的一些模型,用户可以直接调用这些模型。比如想创建一个台阶,可以使用内置的几何体模型来创建,然后将其转换为”可编辑对象”,再对其进一步调节就行了。但是,使用基本几何形体和扩展几何形体来建模的优点在于快捷简单,只调节参数和摆放位置就可以完成模型

    2022年5月18日
  • redisson集成springboot_spring整合redis详解

    redisson集成springboot_spring整合redis详解springboot集成redis非常简单1、引入maven依赖redis包<!–springboot整合redis–><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-redis&lt…

    2022年9月22日
  • vue生成二维码并保存图片_php二维码生成代码

    vue生成二维码并保存图片_php二维码生成代码图片地址生成二维码

    2022年9月5日
  • MyBatis 所有的 jdbcType类型

    MyBatis 所有的 jdbcType类型MyBatis处理MySQL字段类型date与datetime1)DATETIME显示格式:yyyy-MM-ddHH:mm:ss时间范围:[‘1000-01-0100:00:00’到’9999-12-3123:59:59’]2)DATE显示格式:yyyy-MM-dd时间范围:[‘1000-01-01’到’9999-12-31’]3)TIMESTAMP显示格式:yyyy-MM-ddHH:mm:ss时间范围:[‘1970-01-0100:00:00’到’2037-12-

    2022年10月20日

发表回复

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

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