防止重复提交的脚本。

原创 2007年09月21日 10:18:00

把这个作为 <-script src=.....js-><-/script-> 的形式Render到每个页面中就可以了。|
如果有PageBase,则在Init的时候用RegisterClientScriptBlock放上去更好。
因为客户没有抱怨过,所以也没有改进过。


function _doPostBack(){};
if(typeof("__doPostBack")=="function")
{
    _doPostBack=__doPostBack;
    __doPostBack=_doPostBackNew;
}

document.attachEvent("onmousemove",_onmousemove);
var _isPosting=false;
var _divMask=null;

function _onmousemove()
{
    if(_divMask)
    with(_divMask.runtimeStyle)
    {
        left=event.clientX+document.body.scrollLeft-4;
        top=event.clientY+document.body.scrollTop-4;
    }
}


function _makeMask()
{
    var div=document.createElement("DIV");
    with(div.runtimeStyle)
    {
        position="absolute";
        zIndex=999999;
        fontSize="1px";
        left=event.clientX+document.body.scrollLeft-4;
        top=event.clientY+document.body.scrollTop-4;
        width="8px";
        height="8px";
        cursor="wait";
       
        backgroundColor="gray";
        filter="alpha(opacity=10)";
    }
    try
    {
        document.body.insertAdjacentElement("BeforeEnd",div);
        div.onblur=new Function("this.focus()");
        div.focus();
    }
    catch(x){}
   
    if(_divMask)_divMask.removeNode(true);
    _divMask=div;
}

function _doPostBackNew(sender,args)
{
    if(_isPosting)
        return event.returnValue=!(event.cancelBubble=true);

    status="正在更新页面...";
    _doPostBack(sender,args);       
    _isPosting=true;
    _makeMask();
}

function _onformsubmit()
{
    if(_isPosting)
        return event.returnValue=!(event.cancelBubble=true);

    _isPosting=true;
    _makeMask();
}
new function _attachForms()
{
    with(new Enumerator(document.forms))
    for(;!atEnd();moveNext())
    {
        item().attachEvent("onsubmit",_onformsubmit);
        var div=document.createElement("div");
        div.runtimeStyle.width="0px";
        div.runtimeStyle.hight="0px";
        div.runtimeStyle.overflow="hidden";
        div.runtimeStyle.position="absolute";
        item(0).insertAdjacentElement("afterbegin",div);
        div.innerHTML="<INPUT TYPE=Submit name='webformpatchsubmitelement' onclick='return event.returnValue=false' id='webformpatchsubmitelement' value='webformpatchsubmitelement'/>";
    }
}

相关文章推荐

JQuery脚本-通过禁用按钮防止表单重复提交

/* jquer 脚本,避免重复提交 隐藏点击的submit,后在他之后插入同名button伪装成被隐藏的submit 最后禁用全部可见的submit和button 最终效果:点击按钮提交表单后,点击...

【shell】防止脚本重复运行

有些业务脚本需要防止重复,以便造成业务数据不一致。 所以,一般在脚本运行开始,就首先要检查当前系统是否有该脚本的运行进程。 一般人多半是这样写的(比如我们系统里的那帮人):...
  • q3dxdx
  • q3dxdx
  • 2015年10月22日 14:12
  • 917

防止shell脚本重复执行

利用锁机制,让一个特定的shell脚本,每次只能运行一个实例。具体来说,获得锁的脚本实例,能够继续往下执行临界区代码;没有获得锁的实例,则只能等待。 例如,要求脚本只能顺序访问某个资源,例如磁盘文件...

flock防止crontab脚本周期内未执行完重复执行

如果某脚本要运行30分钟,可以在Crontab里把脚本间隔设为至少一小时来避免冲突。而比较糟的情况是可能该脚本在执行周期内没有完成,接着第二个脚本又开始运行了。如何确保只有一个脚本实例运行呢?一个好用...

Linux中如何防止一个Shell脚本被重复执行?

Linux 中Shell 脚本如何防止重复运行的方案实现

crontab防止脚本周期内未执行完重复执行

crontab防止脚本周期内未执行完重复执行 八月 28, 2015 ( NO COMMENTS ) 个人体会:  flock -xn my.lock commond my.lock...

自定义标签防止表单重复提交

  • 2014年04月27日 14:46
  • 370KB
  • 下载

防止重复提交.txt

  • 2010年01月28日 13:03
  • 1KB
  • 下载

Jsp 防止表单重复提交几种方案

SP避免Form重复提交的三种方案  1) javascript ,设置一个变量,只允许提交一次。        var checksubmitflg = false;    func...
  • kalision
  • kalision
  • 2012年08月09日 14:59
  • 23072

ajax 防止按钮重复提交

  • 2017年01月19日 11:40
  • 825B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:防止重复提交的脚本。
举报原因:
原因补充:

(最多只允许输入30个字)