Blog do Neilor

Confirmar o envio de formulário para outro script (cross-page postback)

Publicado por: blogdoneilor em: julho 9, 2009

Olá!

Para apresentar uma caixa de confirmação no cliente antes de um formulário ser processado pelo servidor, no caso de um postback (submit para o mesmo script), estamos acostumados a usar um javascript no evento OnClientClick do botão:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return confirm('Enviar formulário?')" PostBackUrl="default.aspx"/>

Acontece que, quando o formulário tem que ser processado por outro script (cross-page postback), esta instrução não funciona pois, quando você confirma o envio é feito um postback comum, e não acontece o redirecionamento ao script desejado. À primeira vista é uma situação estranha e você pode passar alguns minutos tentando descobrir se há algo errado no javascript, mas não vai encontrar.

Isso acontece porque, nos casos de cross-page postback, o asp.net implementa scripts de cliente para o redirecionamento do formulário, gerando o seguinte código html:

<input type="submit" name="Button1" value="Button" onclick="return confirm('Enviar formulário?');WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;Button1&quot;, &quot;&quot;, false, &quot;&quot;, &quot;default.aspx&quot;, false, false))" id="Button1" />

Neste código, podemos perceber que a primeira instrução só faz um return do resultado do confirm para o documento e cancela a instrução seguinte.

A solução é implementar o confirm dessa forma:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="if(!confirm('OK?'))return false;" PostBackUrl="default.aspx"/>

Dessa forma, só há o return se o visitante clicar em “cancel”, do contrário, o post do formulário é executado normalmente.

Uma coisa estranha que acontece quando o confirm é inserido num script que tenha validação do asp.net, é pedir a confirmação de envio do form e depois a validação exigir preenchimento de alguns campos.

*Eu vi aqui, no Joteke’s Blog

Abraços!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Sobre o Neilor


Trabalho como desenvolvedor asp/asp.net/sql e nas horas horas vagas me interesso em música, videogames e filmes.

Orkut - LinkedIn



twitter do neilor

Páginas

 

julho 2009
S T Q Q S S D
« jun    
 12345
6789101112
13141516171819
20212223242526
2728293031  
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.