js防止表单重复提交的两种方法_javascript技巧

第一种:用flag标识,下面的代码设置checkSubmitFlg标志:

复制代码 代码如下:

<script language="”javascript”">

var checkSubmitFlg = false;

function checkSubmit(){

if(checkSubmitFlg ==true){ return false; //当表单被提交过一次后checkSubmitFlg将变为true,根据判断将无法进行提交。

}

checkSubmitFlg ==true;

return true;

}

< /script >

< form name=”form1” method=”post” onsubmit=”return checkSubmit();”>

………..< /form>

第二种:在onsubmit事件中设置,在第一次提交后使提交按钮失效,代码如下:

复制代码 代码如下:

<form action=”about:blank” method=”post” onsubmit =”getElementById(‘submitInput').disabled=true;return true;” target=”_blank”>
<input type=”submit” id=”submitInput”/>
</form>
</body>
</html>
</script>

因为程序源码跟WIN2000的注册表有冲突,帖子发出后会出现无效页面,以致于论坛里有很多无恶意的重复帖子,后来想出了一个办法,用JS避免重复提交,下面是部分源码:

复制代码 代码如下:

<script Language='JavaScript'>
function formsubmit() {
Today = new Date();
var NowHour = Today.getHours();
var NowMinute = Today.getMinutes();
var NowSecond = Today.getSeconds();
var mysec = (NowHour*3600)+(NowMinute*60)+NowSecond;
if((mysec-document.formsubmitf.mypretime.value)>600)
//600只是一个时间值,就是5分钟内禁止重复提交,值随你高兴设
{
document.formsubmitf.mypretime.value=mysec;
}
else
{
alert(' 按一次就够了,请勿重复提交!请耐心等待!谢谢合作!');
return false;
}
document.forms.formsubmitf.submit();
}
</script>

</HEAD>

<BODY BGCOLOR="#FFFFFF">
<form name=formsubmitf id ="the" method="post" action="XXX.asp">
<input type=hidden name='mypretime' value='0'> //这句不能少,用隐含变量传递一个时间初值

//这里是你要提交的内容

<input type="button" value="写好了" name="button1" class="4round" onclick='formsubmit()'> <font class="red">(请按一次,耐心等待!)</font> <input type="reset" value="重 写" name="button2" class="4round">
</form>

用了这个代码,论坛的重复帖子明显减少,不过有个缺点,就是刷新一次,检测就不起作用,好处就是利用JS检测,不需要额外的权限支持,至于效果如何,用不用就随你们了,(最好前端跟后端都加上检测)

时间: 2016-09-30

js防止表单重复提交的两种方法_javascript技巧的相关文章

php解决和避免form表单重复提交的几种方法_php技巧

前言 为什么要避免form表单被重复提交呢?因为我们不想让我们的服务器重复处理没必要的数据,同时我们也是避免我们的数据库产生重复的数据,避免表单重复提交也是让我们的网站更安全的一种表现. 先看一下有哪些情况下回导致表单重复提交呢,知道哪些情况下可能会出现表单重复提交就可以从根源处理表单重复提交的情况了. 下面的情况就会导致表单重复提交:       点击提交按钮两次.       点击刷新按钮.       使用浏览器后退按钮重复之前的操作,导致重复提交表单.       使用浏览器历史记录重复

js 获取元素下面所有li的两种方法_javascript技巧

js 获取元素下面所有的li 复制代码 代码如下: var content=document.getElementById("content"); var items=content.getElementsByTagName("ul"); var itemss=items[2].getElementsByTagName("li"); 或 复制代码 代码如下: var div=document.getElementById('a'); var ul

js防止表单重复提交

在表单提交的时候,用户有时候会重复的点击提交按钮,会导致多次提交,产生重复数据.我们应该怎么办了?一般想法是:通过attachEvent在 form的onsubmit事件中写一个方法,每次触发该事件时执行该方法,我们可以给form增加一个submited属性,每次判断这个属性,为 false的时候继续提交表单并且设置form.submited=true,反之说明表单已经提交,就不再提交表单.      但是,出现问题了:提交表单一般有三种方式 <form action=xxx.aspx onsu

js动态拼接正则表达式的两种方法_javascript技巧

方法一: 做项目的时候可能会遇到用js验证表单输入正确性的需求,这时候就需要用到js的正则表达式.举个例子:比如说要验证月份,格式为:'yyyy-MM',这个正则表达式写起来很简单,实在写不出,也可以Google.百度一把,网上例子一大堆!但是js正则表达式就这样写死也会带来新的问题:如果配置文件的月份格式改了呢?改成'yyyyMM'.或者是'yyyy_MM'...呢??我们是不是要记得去把js中的正则表达式也跟着一遍遍的改呢?? 这时候我们就要问了:怎样才能写出动态的正则表达式呢,修改了配置文

JS控制HTML元素的显示和隐藏的两种方法_javascript技巧

利用来JS控制页面控件显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位. 方法一: document.getElementById("EleId").style.visibility="hidden"; document.getElementById("EleId").style.visibility="visible"; 利用上述方法实现隐藏后,页面

js获取元素到文档区域document的(横向、纵向)坐标的两种方法_javascript技巧

获取页面中元素到文档区域document的横向.纵向坐标的两种方法及其比较 在js控制元素运动的过程中,对于页面元素坐标位置的获取是经常用到的,这里主要总结下两种方法: 一:通过叠加元素对象和它的offsetParent(如果存在)的offsetLeft/offsetTop属性来实现 在阅读javascript高级程序设计第三版DOM部分时,了解到要获取某个元素在页面上的偏移量,需要将这个元素的offsetLeft和offsetTop与其offsetParent的相同属性相加,一直循环直至根元素

js unicode 编码解析关于数据转换为中文的两种方法_javascript技巧

复制代码 代码如下: var str = "\\u6211\\u662Funicode\\u7F16\\u7801"; 关于这样的数据转换为中文问题,常用的两种方法. 1. eval 解析 复制代码 代码如下: str = eval("'" + str + "'"); // "我是unicode编码" 2. unescape 解析 复制代码 代码如下: str = unescape(str.replace(/\\u/g, &q

IE 下Enter提交表单存在重复提交问题的解决方法_javascript技巧

在submit()后加个return false就可以了.如: 复制代码 代码如下: document.formname.submit(); return false; 以后要注意了 后面尝试了另一种方法: 复制代码 代码如下: if ($("#formid").validationEngine("validate")){ document.getElementById("formid").submit(); } 也是可以的

js判断url是否有效的两种方法_javascript技巧

方法一:(仅适用于ie) 复制代码 代码如下: function CheckStatus(url)        {            XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP")            XMLHTTP.open("HEAD",url,false)            XMLHTTP.send()            return XMLHTTP.status==200        }  

js控制容器隐藏出现防止样式变化的两种方法_javascript技巧

方法一: 复制代码 代码如下: document.getElementById("控件ID").style.visibility="hidden"; document.getElementById("控件ID").style.visibility="visible"; 方法二: 复制代码 代码如下: document.getElementById("控件ID").style.display="no