[RESOLVIDO] Javascript no evento onValidateSuccess

Boa noite pessoal,

Sei que já existem tópicos sobre o assunto, mas não encontrei solução para meu problema.

Tenho um formulário que precisa rodar 2 comandos javascript depois da validação ser bem sucedida. Seriam eles:

echo "";
echo "";

Sei que javascript ocorre no cliente e o onValidateSuccess deve ocorrer no lado do servidor, porém minha dúvida é por que tem horas que os comandos rodam e horas que não rodam? (parecem sempre rodar com o botão excluir, geralmente rodam com o botão atualizar e falham na maioria das vezes com o botão incluir - essa aleatoriedade que não consigo entender).
Também já tentei colocá-los como um método javascript e apresentam o mesmo comportamento.

Ahhh, o comando que falha é o self.parent.calendar_reload(), o self.parent.tb_remove() parece rodar 100%…

Existe alguma solução para isso sem ter que criar botões? Pois gostaria de aproveitar todo o código de validação dos campos obrigatórios nativos do SC.

O que é o sono… criei o tópico no lugar errado… era pra ter sido em “Formulários”… sorry…

Tem que criar este código Javascript em: Programação > Métodos > Javascript: Criar Novo >> CarregarCalendario
Código Javascript:
self.parent.calendar_reload();
self.parent.tb_remove();

Depois no OnAfterInsert e no OnAfterUpdate colocar:
sc_ajax_javascript(‘CarregarCalendario’);

Caso quiser que após o Insert em vez do formulário abrir um novo registro voltar para o atual, que foi incluído:

Boa tarde Jailton,

Obrigado pela resposta!
Porém eu já tentei isso e continua o mesmo comportamento (parece sempre funcionar no botão excluir, geralmente funciona com o botão atualizar e geralmente falha no botão incluir/novo).

Caso quiser que após o Insert em vez do formulário abrir um novo registro voltar para o atual, que foi incluído:

O comando self.parent.tb_remove(); é justamente para ele fechar esse thickbox após a execução, não tenho interesse em voltar para o registro ou abrir um novo…

Alguma outra alternativa?

Deve tentar então outras maneiras, tipo usando IFRAME ou Aplicação Container.
http://www.scriptcase.com.br/tutoriais/aplicacao-de-container/

Opa Jailton,

Não entendi sua sugestão do Container… Acredito que na v9 seja o dashboard.

Porém já chamo o form em IFRAME, com o seguinte código:

tb_show(’’, ‘…/form_eventos_v2/form_eventos_v2.php?nmgp_opcao=igual&id=’+calEvent.id+’&nmgp_outra_jan=true&nmgp_url_saida=modal&TB_iframe=true&modal=true&height=655&width=480’, ‘’)

Acredito ter alguma inconsistência mesmo em tentar usar javascript nos eventos… O que é estranho é a aleatoriedade…

Acho que terei que criar os botões mesmo… Caso essa seja a única saída, já utilizou as linhas de código de validação dos campos obrigatórios do SC?

Agora é contigo ir testando e usar o que der mais certo.

Ok Jailton, obrigado pela ajuda…

Mais alguém gostaria de ajudar/passou por essa situação? Se sim, qual foi a melhor solução?

Pessoal,

Encontrei a solução.

Existe uma particularidade interessante no formulário que não havia notado antes. Para incluir e deletar (no modo debug) é possível notar que a string SQL aparece como um echo e para update a string SQL aparece numa mensagem ajax (o pq disso eu não sei).

A inconsistência estava ocorrendo em querer fazer a chamada do javascript por echo, porém não era só isso. A solução só foi definitiva jogando o comando tb_remove() pra dentro da function calendar_reload() (também não sei por que dessa inconsistência).

Assim, chamando a function calendar_reload() pela macro sc_ajax_javascript() no evento onValidateSuccess está sendo um SUCCESS!!!

Agradeço ao Jailton pela ajuda, mas em especial ao rossati que por mensagens internas me ajudou a insistir até achar o problema. Então fica aí a solução para quem um dia tiver esse tipo de dúvida.

Como podem notar ainda sou novato, mas para o pessoal que é do mesmo nível que eu, fica a dica: persistência sempre trará resultados!

[]'s

Ahhh, um detalhe bem importante também. A opção Aplicação => Navegação => Sair da Aplicação tem que estar desabilitada (tb_remove já tem esse papel), senão na hora de incluir também fica com inconsistência.