Evitar dois cliques no controle

Aqui está uma tarefa rotineira, porém, não encontramos muita documentação sobre isso quando estamos começando com a programação em ASP.NET. Saber controlar os PostBacks é essencial para o desenvolvedor, então, como impedir que um postback ocorra?

Simples! Basta associar uma rotina javascript ao click do seu controle, que pode ser um botão, imagebutton ou o que quer que seja, e realizar o retorno do javascript com o valor de falso.

Primeiro, associamos uma função Javascript ao nosso controle, isso pode ser feito no Page_load ou em qualquer outra rotina de inicialização da página, assim:

protected void Page_Load(object sender, EventArgs e)
{
    ImageButton1.Attributes.Add("onclick", 
                       "javascript:EvitaCliqueDuploAprimorado();");
}

Depois na nossa rotina javascript, realizamos o tratamento desejado. Aqui, eu aproveitei e tratei para que o botão não seja clicado mais do que uma vez, evitando assim, uma chamada adicional ao servidor com o mesmo conteúdo enviado anteriormente.

<script type="text/javascript">
 
       var controlaEnvio = false;
 
       function EvitaCliqueDuploAprimorado() {
 
           if (!controlaEnvio) {
               controlaEnvio = true;
               return controlaEnvio;
           }
           else {
               alert('Você já clicou nesse botão, aguarde até que a sua' + 
                        'requisição seja processada pelo nosso servidor!');
               return false;
           }   
 
       }
   
   </script>

Bem, é isso, abraços… ah, tive que forçar a quebra de linha do código-fonte para que ficasse legível!!

Chilá!@!

2 Comments

Comments have been disabled for this content.