当前位置: 代码迷 >> 综合 >> 在Asp.net中利用Javascript避免表单重复提交(for .net2.0)
  详细解决方案

在Asp.net中利用Javascript避免表单重复提交(for .net2.0)

热度:54   发布时间:2024-01-09 23:52:47.0
  1. //---------------------------------------------------------
  2. // 作者:野文(Jasson)
  3. // 日期:2007-1-11
  4. // 功能:避免重复提交数据
  5. //       请放在HTML页面的最后,</body>标记前</form>标记后。
  6. //---------------------------------------------------------
  7. function _doPostBack(){}; 
  8. if(typeof(__doPostBack)=="function") 
  9. {     
  10.     _doPostBack=__doPostBack; 
  11.     __doPostBack=_doPostBackNew; 
  12. } 
  13. document.attachEvent("onmousemove",_onmousemove); 
  14. var _isPosting=false; 
  15. var _divMask=null; 
  16. var _divMOMask = null;
  17. function _onmousemove() 
  18. {       
  19.     if(_divMOMask) 
  20.         with(_divMOMask.runtimeStyle) 
  21.         {
  22.           left=event.clientX+document.body.scrollLeft-4; 
  23.           top=event.clientY+document.body.scrollTop-4; 
  24.         } 
  25. }
  26. function _makeMOMask() 
  27. { 
  28.     var div=document.createElement("DIV");   
  29.     with(div.runtimeStyle) 
  30.     {
  31.         width="100%";
  32.         height="100%";
  33.         position="absolute";      
  34.       zIndex=999999; 
  35.       fontSize="12px";
  36.       cursor="wait"; 
  37.       backgroundColor="gray"; 
  38.       filter="alpha(opacity=0)";               
  39.     } 
  40.     try 
  41.     {         
  42.       document.body.insertAdjacentElement("BeforeEnd",div);  
  43.       div.style.left=( parseFloat(document.body.offsetWidth)-parseFloat(div.offsetWidth))/2  ;//event.clientX+document.body.scrollLeft-4; 
  44.       div.style.top=(  parseFloat(document.body.offsetHeight)-parseFloat(div.offsetHeight))/2;//event.clientY+document.body.scrollTop-4;                   
  45.       div.οnblur=new Function("this.focus()"); 
  46.       div.focus();       
  47.     } 
  48.     catch(x){} 
  49.     if(_divMOMask)    
  50.         _divMOMask.removeNode(true); 
  51.      _divMOMask=div; 
  52. }  
  53. function _makeMask() 
  54. { 
  55.     var div=document.createElement("DIV"); 
  56.     
  57.     with( div )
  58.     {
  59.         innerHTML = "<font color='red'>正在更新页面,请稍候...</font>";    
  60.         align="center";      
  61.   }
  62.   
  63.     with(div.runtimeStyle) 
  64.     {
  65.         paddingLeft="30px";
  66.         paddingRight="30px";
  67.         paddingTop = "15px";
  68.         paddingBottom="15px";
  69.         position="absolute";      
  70.       zIndex=999998; 
  71.       fontSize="12px";
  72.       cursor="wait"; 
  73.       backgroundColor="#D0D0FF"; 
  74.       filter="alpha(opacity=90)";               
  75.     } 
  76.     try 
  77.     {         
  78.       document.body.insertAdjacentElement("BeforeEnd",div);  
  79.       div.style.left=( parseFloat(document.body.offsetWidth)-parseFloat(div.offsetWidth))/2  ;//event.clientX+document.body.scrollLeft-4; 
  80.       div.style.top=(  parseFloat(document.body.offsetHeight)-parseFloat(div.offsetHeight))/2;//event.clientY+document.body.scrollTop-4;                   
  81.       //div.οnblur=new Function("this.focus()");       
  82.       //div.focus();       
  83.     } 
  84.     catch(x){} 
  85.     if(_divMask)    
  86.         _divMask.removeNode(true); 
  87.      _divMask=div; 
  88. } 
  89. function _doPostBackNew(sender,args) 
  90. { 
  91.     if(_isPosting) 
  92.       return event.returnValue=!(event.cancelBubble=true); 
  93.     window.status="正在更新页面,请稍候...";        
  94.     _doPostBack(sender,args); 
  95.     _isPosting=true; 
  96.     _makeMask();
  97.     _makeMOMask(); 
  98. } 
  99. function _onformsubmit() 
  100. { 
  101.     if(_isPosting) 
  102.       return event.returnValue=!(event.cancelBubble=true); 
  103.     _isPosting=true; 
  104.     _makeMask(); 
  105.     _makeMOMask();   
  106. } 
  107. new function _attachForms() 
  108. {
  109.     if( typeof(WebForm_OnSubmit)=="function" )
  110.     {
  111.         function _WebForm_OnSubmit(){};
  112.         _WebForm_OnSubmit = WebForm_OnSubmit;
  113.         WebForm_OnSubmit = function()
  114.         {
  115.             if( _WebForm_OnSubmit() )
  116.                 _onformsubmit();
  117.         }        
  118.     }
  119.      
  120.     with(new Enumerator(document.forms)) 
  121.     for(;!atEnd();moveNext()) 
  122.     { 
  123.         if( typeof(item().onsubmit)!="function")
  124.           item().attachEvent("onsubmit",_onformsubmit);       
  125.       var div=document.createElement("div"); 
  126.       div.runtimeStyle.width="0px"; 
  127.       div.runtimeStyle.hight="0px"; 
  128.       div.runtimeStyle.overflow="hidden"; 
  129.       div.runtimeStyle.position="absolute"; 
  130.       item(0).insertAdjacentElement("afterbegin",div); 
  131.       div.innerHTML="<INPUT id=webformpatchsubmitelement οnclick='return event.returnValue=false' type=submit value=webformpatchsubmitelement name=webformpatchsubmitelement>";     
  132.     } 
  133. } 
  相关解决方案