none
Alert Javascript RRS feed

  • Pergunta

  • Tenho o seguinte código:
                    string strScript = "<script language='JavaScript'>alert('Formulário cadastrado com sucesso. O número da nova solicitação é " + codSolic + ". Um e-mail foi enviado a você e a cada um dos responsáveis pela aprovação. !')</script>";
                    Page.RegisterStartupScript("PopUp", strScript);
                    
    
                    VoltaDefault();
    Quero que a função VoltaDefault seja executada apenas depois que o usuário clicar no botão "Ok" do Alert. Do modo que está agora o código passa reto pelo Alert e já entra na função VoltaDefault de modo que a caixa de mensagem não aparece e a página é redirecionada.
    O que fazer?
    segunda-feira, 5 de outubro de 2009 12:42

Respostas

  • Tenho o seguinte código:
                    string
     strScript = "<script language='JavaScript'>alert('Formulário cadastrado com sucesso. O número da nova solicitação é "
     + codSolic + ". Um e-mail foi enviado a você e a cada um dos responsáveis pela aprovação. !')</script>"
    ;
                    Page.RegisterStartupScript("PopUp"
    , strScript);
                    
    
                    VoltaDefault();
    
    Quero que a função VoltaDefault seja executada apenas depois que o usuário clicar no botão "Ok" do Alert. Do modo que está agora o código passa reto pelo Alert e já entra na função VoltaDefault de modo que a caixa de mensagem não aparece e a página é redirecionada.
    O que fazer?
    Tito tenta fazer assim :


    "<script language='JavaScript'>alert('Formulário cadastrado com sucesso. O número da nova solicitação é " + codSolic + ". Um e-mail foi enviado a você e a cada um dos responsáveis pela aprovação. !'); VoltaDefault();</script>";
    • Marcado como Resposta Tito de Oliveira quinta-feira, 8 de outubro de 2009 17:06
    quinta-feira, 8 de outubro de 2009 15:30

Todas as Respostas

  • Olá Tito,

    Acontece o seguinte: quando você faz o Page.RegisterStartupScript, ele só mostrará a caixa de mensagens se realizar o postback completo.

    Para que você obtenha uma confirmação do usuário antes de executar o evento, sugiro que faça do seguinte

    (Supondo que você esteja usando um botão)

    btnExecutaAcao.Attribute.Add("onclick","javascript:return confirm('<Seu texto aqui>');");

    Caso o usuário selecione "Não / Cancelar", ele irá dar um return "false", o que irá cancelar o evento de postback!

    Tente e depois diga se funcionou..

    Abraços,

    Rodrigo Vedovato
    Programador .Net
    segunda-feira, 5 de outubro de 2009 23:16
  • Não estava nos planos dar para o usuário a liberdade de dar continuidade ou cancelar o procedimento, a janela deveria apenas apresentar um botão "ok", mas por hora resolve o problema.
    terça-feira, 6 de outubro de 2009 13:37
  • Utilize o if(confirm).

    No teu caso algo assim:

    "<script language='JavaScript'>if(confirm('Formulário cadastrado com sucesso. O número da nova solicitação é " + codSolic + ". Um e-mail foi enviado a você e a cada um dos responsáveis pela aprovação. !')){ VoltaDefault();} </script>";


    Só executa se confirmar, pode até colocar um else.
    Era isso que precisava?
    terça-feira, 6 de outubro de 2009 13:50
  • Acontece que a janela deveria aparecer só para mostrar aquele código e para dar a confirmação para o usuário, não pra ele definir se quer ou não dar continuidade ao procedimento.
    terça-feira, 6 de outubro de 2009 14:10
  • Olá Tito,

    Como vai você?

    Então, vamos lá...Como todos falaram aqui, usando o alert você não irá conseguir recuperar o evento de Ok e parar a execução antes que ele ocorra, e tem outro problema com o Alert que particularmente acho terrível, que é o fato de mostrar uma mensagem de sucesso com ícone de Warning, geralmente confunde o usuário. Você também ja deixou bem claro que não quer usar confirm...quer uma mensagem de sucesso que só abilite o botão Ok e continue a execução do código após o botão ter sido selecionado, portanto minha dica é a seguinte:

    Utilize uma mensagem customizada, que usa html e Java Script para mostrar a mensagem e bloquear o resto da página, mensagem essa que você definite tanto o ícone que irá mostrar e também os controles que a irão compor, e poderá então colocar somente o botão Ok e manipular o evento de click dele server side. Aqui você encontra um bom exemplo de como fazer isso:

    http://www.codeproject.com/KB/aspnet/ASP.Net_MessageBox.aspx

    Espero que isso te ajude,

    Abraços!
    Michael M. Lima
    MCTS: WSS 3.0 Config/Dev | MOSS 2007 Config/Dev
    mlimablog.spaces.live.com | www.CanalSharePoint.com.br
    quarta-feira, 7 de outubro de 2009 12:20
  • Não vejo a necessidade de se criar toda uma customização para uma solução tão simples. Se houvesse a possibilidade de reutilizar o css dessa janela customizada em outras janelas na aplicação, até faria sentido, mas em vista que o único momento em que devo mostrar uma mensagem para o usuário é o momento descrito creio que seria gasto de recursos.
    Quero manter o sistema o menos complicado possível, caso contrário já estaria utilizando Ajax para resolver o empecilho.

    Se ninguém souber de uma maneira mais objetiva e direta para a solução me vejo obrigado a me aventurar nessas customizações, mas por hora mantenho a esperança de que haja um código simples para isso.
    quinta-feira, 8 de outubro de 2009 12:42
  • no método que será executado 

    ScriptManager.RegisterStartupScript(Page, typeof(Page), new Guid().ToString(), "alert('oi');", true);



    Rudson Kiyoshi Souza Carvalho
    quinta-feira, 8 de outubro de 2009 14:26
  • Tenho o seguinte código:
                    string
     strScript = "<script language='JavaScript'>alert('Formulário cadastrado com sucesso. O número da nova solicitação é "
     + codSolic + ". Um e-mail foi enviado a você e a cada um dos responsáveis pela aprovação. !')</script>"
    ;
                    Page.RegisterStartupScript("PopUp"
    , strScript);
                    
    
                    VoltaDefault();
    
    Quero que a função VoltaDefault seja executada apenas depois que o usuário clicar no botão "Ok" do Alert. Do modo que está agora o código passa reto pelo Alert e já entra na função VoltaDefault de modo que a caixa de mensagem não aparece e a página é redirecionada.
    O que fazer?
    Tito tenta fazer assim :


    "<script language='JavaScript'>alert('Formulário cadastrado com sucesso. O número da nova solicitação é " + codSolic + ". Um e-mail foi enviado a você e a cada um dos responsáveis pela aprovação. !'); VoltaDefault();</script>";
    • Marcado como Resposta Tito de Oliveira quinta-feira, 8 de outubro de 2009 17:06
    quinta-feira, 8 de outubro de 2009 15:30
  • Agora sim! Valeu!
    quinta-feira, 8 de outubro de 2009 17:06