Como evitar envio duplo com jQuery no aplicativo ASP.NET com UpdatePanels
Eu tenho um aplicativo ASP.NET de intranet que às vezes é lento para responder. Meu requisito é evitar envio duplo e, idealmente, fornecer feedback ao usuário de que o formulário já foi enviado.
Os exemplos que encontrei mostram como desativar um botão de envio, mas isso não é suficiente, pois no meu aplicativo, o envio pode acontecer:
De um botão de envio.De qualquer controle com AutoPostBack = true (que envia usando javascript AFAIK).De qualquer um dos itens acima dentro de um UpdatePanel - nesse caso, como entendi, o POST é feito usando AJAX, e eu precisaria reativar quando a chamada do AJAX estiver completa.Estou pensando em algo como exibir um pop-up de sobreposição / modal, talvez com uma imagem de progresso animada que seria exibida durante o envio. E no caso de um UpdatePanel, oculto quando a chamada AJAX é concluída.
Alguém tem um exemplo que pode ser facilmente integrado em páginas ASP.NET como acima? Ou indique quais eventos eu precisaria conectar para exibir / ocultar a sobreposição.
ATUALIZAR
A resposta de @Aristos me pegou a maior parte do caminho. A parte principal é manipular PageRequestManager.endRequest para ocultar o diálogo de progresso quando uma chamada AJAX for concluída.
Há um caso em que ainda tenho um problema: se um botão de envio resultar em um download de arquivo, não tenho um evento que possa usar para ocultar meu diálogo de progresso.Essa questão tem uma resposta que pode fazer o truque, vou tentar.