javascript 防止重复提交

javascript 防止重复提交

很多时候我们都需要防止重复提交,这方面的文章也比较多,实现的途径差别也很大.以下是我写的一种控制提交的方式.因为有些时候即使服务器能够识别重复的提交,也会造成问题.比如需要很长等待时间的操作,在首次提交后,不断重复提交,页面可能会死掉.用脚本来控制的话可以防止这种问题.当然也可以脚本和服务器都进行控制,这样就比较完美了.

    闲话少说,将以下脚本放置于页面顶部.

 1
None.gif
document.IsPosted 
=
 
false
;

 2
None.gif
function
 CancelDubSubmit()

 3
ExpandedBlockStart.gifContractedBlock.gif
dot.gif

 4InBlock.gif    if ((typeof(event.returnValue) == undefined || event.returnValue== true&& !document.IsPosted)
 5ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif
 6InBlock.gif        document.IsPosted = true;
 7InBlock.gif        event.returnValue = true;
 8ExpandedSubBlockEnd.gif    }

 9InBlock.gif    else
10ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{          
11InBlock.gif        event.returnValue = false;
12ExpandedSubBlockEnd.gif    }

13ExpandedBlockEnd.gif}

以下加粗部分放置于form标签中,如果你已经有了onsubmit事件的其他执行函数,可以放在一起,最好将CancelDubSubmit()函数放在最后.

None.gif
<
form 
id
=”Form1″
 onsubmit
=”CancelDubSubmit();”
 method
=”post”
 runat
=”server”
>

    其中document.IsPosted是为了记录是否回送.一旦页面回送,document.IsPosted将为true. 重新加载后,document.IsPosted=false将被执行.当onsubmit事件没有其他执行函数或者其他执行函数返回true并且document.IsPosted=false时,回送页面,否则停止回送.

    以上方法不能控制使用 function __doPostBack() 函数的服务器端控件.因为在此函数中的提交是靠 document.Form1.submit() 实现的,它不会触发Onsubmit事件.那么我们还需要重写__doPostBack() 函数.

ExpandedBlockStart.gif
ContractedBlock.gif
function
 __doPostBack(eventTarget, eventArgument) 
dot.gif
{

InBlock.gif    
if (!document.IsPosted)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{

InBlock.gif        
var theform;
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (window.navigator.appName.toLowerCase().indexOf(netscape> 1dot.gif{

InBlock.gif            theform 
= document.forms[Form1];
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
else dot.gif{

InBlock.gif            theform 
= document.Form1;
ExpandedSubBlockEnd.gif        }

InBlock.gif        theform.__EVENTTARGET.value 
= eventTarget.split($).join(:);
InBlock.gif        theform.__EVENTARGUMENT.value 
= eventArgument;    
InBlock.gif        
InBlock.gif        document.IsPosted 
= true;
InBlock.gif        theform.submit();
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

请将以上代码放置于页面的原__doPostBack() 函数之后.

转载于:https://www.cnblogs.com/redfire0922/archive/2006/06/20/430746.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • linux系统 系统推荐 deepin国产系统 最好用的国产linux系统 Windows系统的优秀替代品 deepin系统安装 系统安装 deepin[通俗易懂]

    linux系统 系统推荐 deepin国产系统 最好用的国产linux系统 Windows系统的优秀替代品 deepin系统安装 系统安装 deepin[通俗易懂]前言:我用过多款linux系统,电脑上装的是Ubuntu和deepin,服务器端用的是centos,还用过优麒麟等。黑苹果也用了一段时间。现在linux系统已经发展的比较完善,内核及其图形界面也很稳定,当要说真的可以当做个人操作系统来使用的,我认为是deepin系统。deepin是一款国产系统,基于debian开发的linux操作系统,它拥有linux系统的所有优势,而且完美结合deepin-…

    2022年5月16日
    51
  • 华为机顶盒系统时间同步服务器,华为悦盒主时间同步服务器地址

    华为机顶盒系统时间同步服务器,华为悦盒主时间同步服务器地址华为悦盒主时间同步服务器地址内容精选换一换华为云存储容灾服务(简称SDRS)提供了虚拟机级别的容灾保护,当主站点故障的时候,虚拟机可以在备站点迅速恢复,以确保业务的联系性来自:产品边缘节点既可以是物理机,也可以是虚拟机。边缘节点需要满足表1的规格要求。华为悦盒主时间同步服务器地址相关内容为了确保HBase日常数据安全,或者系统管理员需要对HBase进行重大操作(如升级或迁移等),需要对HBas…

    2022年7月16日
    39
  • 具有指令流水线结构的cpu_cpu流水线技术

    具有指令流水线结构的cpu_cpu流水线技术为什么小小一个CPU,有那么多周期(Cycle)?程序的性能,是由三个因素相乘来衡量的,“指令数×CPI×时钟周期”。和周期相关的只有一个时钟周期,即CPU主频的倒数。一个CPU的时钟周期可以认为是可以完成一条最简单的计算机指令的时间。那为何构造CPU时,有那么多周期?单指令周期处理器一条CPU指令的执行,由FDE三步组成。这个执行过程,至少需花费一个时钟周期。因为在取指令的时候,我们需要通过时钟周期的信号,来决定计数器的自增。很自然,我们希望能确保让这样一整条指令的执行,在一个时钟周期内完成

    2022年8月20日
    11
  • 组合数递推的计算方法 c语言,组合数公式的递推公式

    组合数递推的计算方法 c语言,组合数公式的递推公式组合数公式的递推公式:c(m,n)=c(m-1,n-1)+c(m-1,n)。等式左边表示从m个元素中选取n个元素,而等式右边表示这一个过程的另一种实现方法:任意选择m中的某个备选元素为特殊元素,从m中选n个元素可以由此特殊元素的被包含与否分成两类情况,即n个被选择元素包含了特殊元素和n个被选择元素不包含该特殊元素。前者相当于从m-1个元素中选出n-1个元素的组合,即c(m-1,n-1);后者相当于…

    2022年7月15日
    19
  • webstorm激活码2021年【注册码】

    webstorm激活码2021年【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    64
  • NotePad++ 正则表达式替换 高级用法[通俗易懂]

    NotePad++ 正则表达式替换 高级用法[通俗易懂]在我们处理文件时,很多时候会用到查找与替换。当我们想将文件中某一部分替换替换文件中另一部分时,怎么办呢?下面正则表达式给我提供方法。正则表达式,提供复杂并且弹性的查找与替换注意:不支持多行表达式(involving\n,\r,etc).1基本表达式PatternMeaning.匹配任意字符,除了新一行(\n)。也就是说“.”可以匹配\r,当文件中同时含有\ra

    2022年5月13日
    72

发表回复

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

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