javascript 防止重复提交
来源:互联网 发布:sql中左外连接 编辑:程序博客网 时间:2024/05/27 20:17
很多时候我们都需要防止重复提交,这方面的文章也比较多,实现的途径差别也很大.以下是我写的一种控制提交的方式.因为有些时候即使服务器能够识别重复的提交,也会造成问题.比如需要很长等待时间的操作,在首次提交后,不断重复提交,页面可能会死掉.用脚本来控制的话可以防止这种问题.当然也可以脚本和服务器都进行控制,这样就比较完美了.
闲话少说,将以下脚本放置于页面顶部.
以下加粗部分放置于form标签中,如果你已经有了onsubmit事件的其他执行函数,可以放在一起,最好将CancelDubSubmit()函数放在最后.
其中document.IsPosted是为了记录是否回送.一旦页面回送,document.IsPosted将为true. 重新加载后,document.IsPosted=false将被执行.当onsubmit事件没有其他执行函数或者其他执行函数返回true并且document.IsPosted=false时,回送页面,否则停止回送.
以上方法不能控制使用 function __doPostBack() 函数的服务器端控件.因为在此函数中的提交是靠 document.Form1.submit() 实现的,它不会触发Onsubmit事件.那么我们还需要重写__doPostBack() 函数.
请将以上代码放置于页面的原__doPostBack() 函数之后.
闲话少说,将以下脚本放置于页面顶部.
1document.IsPosted = false;
2function CancelDubSubmit()
3{
4 if ((typeof(event.returnValue) == "undefined" || event.returnValue== true) && !document.IsPosted)
5 {
6 document.IsPosted = true;
7 event.returnValue = true;
8 }
9 else
10 {
11 event.returnValue = false;
12 }
13}
2function CancelDubSubmit()
3{
4 if ((typeof(event.returnValue) == "undefined" || event.returnValue== true) && !document.IsPosted)
5 {
6 document.IsPosted = true;
7 event.returnValue = true;
8 }
9 else
10 {
11 event.returnValue = false;
12 }
13}
以下加粗部分放置于form标签中,如果你已经有了onsubmit事件的其他执行函数,可以放在一起,最好将CancelDubSubmit()函数放在最后.
<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() 函数.
function __doPostBack(eventTarget, eventArgument) {
if (!document.IsPosted)
{
var theform;
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
theform = document.forms["Form1"];
}
else {
theform = document.Form1;
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
document.IsPosted = true;
theform.submit();
}
}
if (!document.IsPosted)
{
var theform;
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
theform = document.forms["Form1"];
}
else {
theform = document.Form1;
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
document.IsPosted = true;
theform.submit();
}
}
请将以上代码放置于页面的原__doPostBack() 函数之后.
- javascript 防止重复提交
- javascript 防止重复提交
- JavaScript 防止重复提交
- javascript 防止重复提交
- Javascript防止表单重复提交
- javascript防止表单重复提交
- javascript防止表单重复提交
- 使用JavaScript防止表单重复提交
- ASP.NET利用JavaScript防止重复提交
- JSP中防止重复提交(Javascript)
- javascript防止表单重复提交(转)
- 使用Javascript防止重复提交表单
- JSP中防止重复提交(Javascript)
- JavaScript之jQuery防止重复提交
- 防止重复提交数据
- 防止重复提交
- struts防止重复提交
- 防止表单重复提交
- Hibernate configure 文件
- C#中using的使用
- Linux文件查找命令find,xargs详述
- 深入biztalk中各种端口绑定方式(四)-- dynamic(动态)
- DHC log 2008-12-26
- javascript 防止重复提交
- zk中各种图形使用的代码
- javascript 弹出层
- (分页、排序等)asp.net 2.0下一个标准GRIDVIEW功能的实现
- javascript 弹出浮动层,并锁定当前窗口一
- 说说掌握JavaScript语言的思想前提
- Asp.net Ajax ASP.NET 局部更新PostBack的客户端调用过程
- 二叉树的操作
- js中SetAttributes的用法和注意事项