Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rendan

Como não permitir que um form seja postado + de uma vez

Recommended Posts

Tenho um botão (button) em página asp.net (Vb.Net) que ao usuário clicar posta o form, porém eu quero que antes o botão fique disabilitado evitando que o usuário clique novamente pois o processamento pode demorar e a impaciência do usuário é grande.

 

Como inibir o botão ou mesmo não permitir um novo post desta página?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui tem uma solução com asp.net ajax

http://www.codeproject.com/Articles/96407/How-to-disable-subsequent-submit-button-clicks-whe

 

<%@ Page Title="Test Disable Subsequent Submit Clicks Page" 
Language="C#" AutoEventWireup="true"
   CodeBehind="Default.aspx.cs" Inherits="_Default" %>
<body>
   <form id="Form1" runat="server" action="Default.aspx">
   <div>
       <asp:ScriptManager ID="ScriptManager" runat="server">
       </asp:ScriptManager>
       <asp:UpdatePanel ID="AsynUpdatePanel" runat="server" UpdateMode="Conditional">
           <ContentTemplate>
           <!-- Here on click is a long running operation e.g. 30 secs -->
               <asp:Button ID="Submit" runat="server" 
		OnClick="Submit_Click" Text="Submit" />
               <asp:UpdateProgress ID="UpdateProgress" 
		runat="server" AssociatedUpdatePanelID="AsynUpdatePanel"
                   DynamicLayout="False">
                   <ProgressTemplate>
                       Update in Progress...</ProgressTemplate>
               </asp:UpdateProgress>
           </ContentTemplate>
       </asp:UpdatePanel>
   </div>

   <!-- Here we are blocking the subsequent requests using client side scripting -->
   <!-- Also instead of alert one can customize the way he wants to handle -->
   <script type="text/javascript" language="javascript">
       var requestManager = Sys.WebForms.PageRequestManager.getInstance();
       requestManager.add_initializeRequest(CancelPostbackForSubsequentSubmitClicks);

       function CancelPostbackForSubsequentSubmitClicks(sender, args) {
           var iIdBtn = "<%= Submit.ClientID %>";
           if (requestManager.get_isInAsyncPostBack() && 
	args.get_postBackElement().id == iIdBtn)
           {
               args.set_cancel(true);                
               alert('A previous request is still in progress 
	that was issued on clicking ' + args.get_postBackElement().id);
           }
       }
   </script>
   </form>
</body>

 

protected void Submit_Click(object sender, EventArgs e)
{
   //A long running operation
   System.Threading.Thread.Sleep(5000);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

sem ajax podes utilizar uma função javascript, exemplo:

 

btnEnviar.OnClientClick = "return Clique('Aguarde a requisição posterior esta sendo processada.');";

 

   <script type="text/javascript" language="javascript"> 
       vCliq = 0;
       function Clique(pMsg){
           if (vCliq == 0) {
               vCliq = 1;
               objWin=window.showModelessDialog("aguarde.htm", "Aguarde","dialogWidth:600px;dialogHeight:170px;help:no;status:no;center:yes");
               return true;
           }
           else {
               alert(pMsg);
               return false;
           }
       }  
   </script>  

OBS.: essa linha é opcional objWin=window.showModelessDialog

 

sugestão para o aguarde.htm

<HTML>
<HEAD>
<TITLE>Aguarde...</TITLE>
</HEAD>
<BODY bgColor=white link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">

<TABLE WIDTH=75% ALIGN=center border=0 CELLSPACING=10 CELLPADDING=0 bgcolor=White>
<TR>
 <TD align=center>
         <FONT color=Red> 
           <B>Aguarde, este processo pode demorar alguns minutos!! </B>
           <BR>
           <img src="imgs/processo.gif" visible="true" /> 
           <br />********************************************************************
           <br />NÃO ATUALIZE A TELA E NEM USE NOVAMENTE O PROGRAMA ANTES DO FIM DO PROCESSAMENTO
           <br />********************************************************************<br>
         </FONT>
        </TD>
</TR>
</TABLE>

</BODY>
</HTML> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.