Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据
表单提交时候我们应该控制提交按钮,不能点击多次进行数据的重复提交。要不然就会有冗余的重复的数据在系统中,造成系统出现数据垃圾。jQuery很简单的就可以实现对表单提交按钮控制,下面就是相关的例子和代码。
- <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>
<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
第一种:
- <form name=fm method="POST" action="/">
- <p>按钮变灰</p>
- name: <input type="text" name="name"/>
- <input type="button" value="提交" onclick="javascript:{this.disabled=true;document.fm.submit();}">
- </form>
<form name=fm method="POST" action="/">
<p>按钮变灰</p>
name: <input type="text" name="name"/>
<input type="button" value="提交" onclick="javascript:{this.disabled=true;document.fm.submit();}"> </form>
第二种:
- <form name=fm method="POST" action="/" >
- <input type="submit" name="Submit" value="提交" id="submitId" onclick="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>
<form name=fm method="POST" action="/" >
<input type="submit" name="Submit" value="提交" id="submitId" onclick="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!
Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据的更多相关文章
- Jquery 实现表单验证,所有验证通过方可提交
1. [代码]Jquery 实现表单验证,所有验证通过方可提交 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
- form表单取消按钮自动提交
默认写在form表单里的按钮可以自动提交表单,现在要实现的效果是点击button按钮调用js函数,再有ajax提交 <button type="button" class=& ...
- jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用
一.jQuery Form的其他api 1. formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...
- jQuery Form 表单提交插件----Form 简介,官方文档,官方下载地址
一.jQuery Form简介 jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Form有两个核心方法 -- ajaxF ...
- 通过AJAX和PHP,提交JQuery Mobile表单
File name: callajax.php <?php $firstName = $_POST[firstName]; $lastName = $_POST[lastName]; echo( ...
- 雷林鹏分享:jQuery EasyUI 表单 - 创建异步提交表单
jQuery EasyUI 表单 - 创建异步提交表单 本教程向您展示如何通过 easyui 提交一个表单(Form).我们创建一个带有 name.email 和 phone 字段的表单.通过使用 e ...
- jquery.validate.js 验证表单时,在IE当中未验证就直接提交的原因
jquery.validate.js 验证表单时,在IE当中未验证就直接提交的原因 今天利用了jquery.validate.js来验证表单,发现在火狐.谷歌浏览器当中都可以进行验证,但是在IE系列浏 ...
- Jquery form表单提交
起因 由于项目中原先提交from是通过JavaScript指定action,在submit提交的,使用的方式,也不是很标准,造成除了ie之外的浏览器都不能正常的提交数据,做web项目还是要考虑到浏览器 ...
- 使用JS和JQuery 阻止表单提交的两种方法
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
随机推荐
- AutoCAD VBA添加菜单
# 给cad添加自定义菜单 Private Sub AddBar() Dim NewMenuItem As AcadPopupMenuItem Dim TheMacro As String Dim M ...
- 爬虫—Selenium使用
Selenium使用 Selenium是一个自动化测试工具,可以驱动浏览器器执行特定的动作,如点击,下拉等.同时还可以获取浏览器当前呈现页面的源代码,可见即可爬. 1.准备 我们使用谷歌Chrome浏 ...
- Linux day01(二)虚拟机快照和克隆的用法介绍
一:快照 优点:运行虚拟机后不用担心系统会被弄崩溃了,点击快照会立即恢复到初始状态 缺点:回滚会带来数据的丢失,所以要考虑数据恢复的成本和找回数据时进行操作的成本 1. 在导航栏中找虚拟机快照的小图标 ...
- Maven构建的生命周期
什么是构建生命周期 构建生命周期是一组阶段的序列(sequence of phases),每个阶段定义了目标被执行的顺序.这里的阶段是生命周期的一部分.举例说明,一个典型的 Maven 构建生命周期是 ...
- iOS静态库.Framework制作
首先要解释一下什么是库,库(Library)其实就是一段编译好的二进制代码,加上头文件就可以供别人使用,一般会有两种情况要用到库: 某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式 ...
- 51nod1298 圆与三角形
1298 圆与三角形 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三 ...
- EditText(8)EditText中drawableRight图片的点击事件
参考: http://stackoverflow.com/questions/3554377/handling-click-events-on-a-drawable-within-an-edittex ...
- 页面置换算法-LRU(Least Recently Used)c++实现
最近最久未使用(LRU)置换算法 #include <iostream> #include <cstdio> #include <cstring> #include ...
- 设计模式("大话设计模式"读书笔记 C#实现)
前言:毫无疑问 ,学习一些设计模式,对我们的编程水平的提高帮助很大.写这个博客的时候自己刚开始学习设计模式,难免有错,欢迎评论指正. 我学设计模式的第一本书是“大话设计模式”. 1.为什么要学设计模式 ...
- 手机页面操作栏的创建及WebFont的使用
一.手机界面底部操作栏的创建. <style> .opers{ position:absolute; bottom:0px; left:0px; right:0px; height:3re ...