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


相关推荐

  • idea2021.8激活码-激活码分享

    (idea2021.8激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlKU…

    2022年3月22日
    52
  • golang面试题(带答案)[通俗易懂]

    golang面试题(带答案)[通俗易懂]1.下面代码输出什么,为什么 //make([]T,length,capacity) s1:=[]int{1,2,3} fmt.Println(s1,”哈哈”)//[123] s2:=s1 fmt.Println(s1,”哈哈”)//[123] fori:=0;i<3;i++{ s2[i]=s2[i]+1 } fmt.Println(s1)//[234] fmt.Println(s2)//[234][12

    2022年6月29日
    88
  • MPC-HC播放器_mp238播放器设置说明

    MPC-HC播放器_mp238播放器设置说明以下内容均来自互联网本文仅作参考,请使用MPC-HC最新版本结合自身硬件条件和实际播放情况进行设置和调整!启动MPC-HC,先设置语言:(最新版本会自动选择对应的系统语言)View-Language-Chinese=>界面变为中文进视图-选项:播放器:建议勾选「保存设置至.ini文件中」格式:建议勾选全部视频类格式,其中QuickTi

    2022年9月14日
    5
  • django 渲染_django开源项目

    django 渲染_django开源项目前言渲染模块的原理和解析模块是一样,drf默认的渲染有2种方式,一种是json格式,另一种是模板方式。渲染模块源码入口入口:APIView类中dispatch方法中的:self.response

    2022年8月7日
    1
  • 最新海康摄像机、NVR、流媒体服务器、回放取流RTSP地址规则说明[通俗易懂]

    最新海康摄像机、NVR、流媒体服务器、回放取流RTSP地址规则说明[通俗易懂]本文档主要介绍海康威视设备直播预览RTSP、录像回放RTSP、流媒体取流的RTSPURL和IE直接预览、回放的HTTPURL。RTSP为取流协议,取到码流后需要解码显示,可以通过VLC播放器或者EasyPlayer播放器进行测试,IE等浏览器网页不支持RTSP协议直接取流预览或者回放,需要安装OCX插件,这也是目前大部分安防厂家的做法。目前也有很多支持RTSP进行网页无插件直播的流媒…

    2022年6月11日
    73
  • Java程序概述

    Java程序概述Java程序概述一、Java开发环境1、Java程序编译执行的过程2、Java平台概述3、JDK部分常用工具二、Application三、Applet四、Servlet五、JSP和JavaBean六、脚本一、Java开发环境1、Java程序编译执行的过程Java程序在编译执行过程中,首先把源文件(.java文件)编译成字节码文件,即类文件(.class);然后由解释器负责解释执行类文件。2、Java平台概述Java平台包括Java应用程序接口(API)和Java虚拟机(JavaVirtual

    2022年7月7日
    24

发表回复

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

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