[RESOLVIDO] Consulta: Associar evento onClick a outro evento ou método PHP

Prezados,

Tenho uma Consulta onde uma coluna é um link. No onClick desse link, apresento uma mensagem de confirmação SIM/NÃO. Tem como vincular outro evento onClick (ou método PHP) ao clicar no “Sim”? Em aplicação do tipo Formulário consigo incluir um campo checkbox, criar o evento pra ele e associar esse evento ao botão, mas na Consulta, não consegui fazer.

Desde já, grata pela atenção.

se usar a macro sc_ajax_message é possivel sim.

Haroldo, obrigada pelo retorno de sempre!

Justamente essa macro que estou usando, seguindo uma dica que você passou. A questão toda é por se tratar de uma Consulta, não consegui fazer a vinculação.

Código do link “Estornar”

sc_ajax_message("Confirma estorno recebimento?<br><br>
		<button onclick='do_ajax_grid_recebimento_realizado_event_documento_onclick(); _nmAjaxMessageBtnClose(); return false;'>Sim</button>&nbsp;
		<button autofocus onclick='_nmAjaxMessageBtnClose(); return false;'>Não</button><br>",
		"<b>Atenção</b>", "show_close=N");

documento_onClick

echo 'TESTE';

Quando clico no Documento na grid, mostra ‘TESTE’. No entanto, quando clico no “Sim” da mensagem de confirmação, nada acontece.

É que o Sim é redirecionado para uma app.

Você faz assim:

Antes da macro: [VAR_ONCLICK]=‘SIM’;

depois da macro: [VAR_ONCLICK]=‘NÃO’;

na macro vc redirecionar para própria consulta e no evento onscriptinit vc testa :

if ([VAR_ONCLICK]==‘SIM’) { faça isso; };
[VAR_ONCLICK]=‘NÃO’;

Certo. Como minha consulta iniciava pelo filtro, fiz assim:

  1. Alterei para iniciar pela consulta e ajustei a chamada pelo menu para iniciar pelo filtro.

  2. Antes da macro:

    [VAR_ONCLICK]='SIM';
    [var_id_recebimento] = {id}; //Armazena em uma global o ID do registro selecionado
  1. Na chamada da macro, removi os botões (não soube fazer o redir direto no onClick) e usei os botões nativos da macro:
sc_ajax_message("Confirma estorno recebimento?<br>", "<b>Atenção</b>", "show_close=Y&button=Y&button_label=Sim&redir=grid_recebimento_realizado.php");

  1. NÃO redefini o valor da [VAR_ONCLICK] após a macro.

  2. onScriptInit

if ([var_onclick] == 'SIM') {
    estorna_recebimento([var_id_recebimento]);
}
[var_onclick] = 'NÃO';
[var_id_recebimento] = 0;

FUNCIONOU!

Se entendi errado ou existir uma maneira melhor de fazer, agradeço as sugestões.

Haroldo, obrigada como sempre!

Não foi resolvido da maneira citada anteriormente. Mesmo o usuário clicando em “Fechar” que é o equivalente a “Não”, a rotina executava devido o valor default “SIM” associado à variável [VAR_ONCLICK] antes da macro. E se definir como “NÃO” após a macro, nunca executa o evento.

Alterei a mensagem associando via passagem de parâmetro.

sc_ajax_message(“Confirma estorno recebimento?
”,
Atenção”, “show_close=Y&button=Y&button_label=Sim&redir=grid_recebimento_realizado.php”, “VAR_ONCLICK=SIM”);

Assim funcionou.

Boa tarde. preciso fazer algo parecido, mas nenhuma das opções atendeu a minha necessidade.

No meu formulário preciso fazer a geração de links dinamicamente com objetivo de executar um link que abrirá um arquivo, no entanto a minha pasta de arquivos é protegida contra o acesso externo, utilizo HTTP_REFERER com .htaccess para isso. portanto, se eu fizer um redirecionamento não conseguirei abrir o arquivo, pois a variavel super global irá vazia e o htaccess bloqueará meu acesso.

Finalmente, gostaria de executar o meu código na mesma aplicação utilizando o link para chamar o método PHP, é possivel?

Ex.: 'a href=método()>link</a (desconsidere a sintaxe, pois a página estava executando o meu código)

utilize a palavra code entre colchetes para abrir sessão de código e /code entre colchetes para fechar a sessão de código.

para executar um método php utilize

<a href=# onclick=js_metodo();>clique</a>

Onde js_metodo é um método javacript que executa um método php via ajax.

@InfinitusWeb Mil perdões e desculpe o abuso, mas ainda sou muito ruim em javascript. vc teria algum exemplo de código javascript para executar o método php?

Nesse exemplo utilizo isso:

Toooop @InfinitusWeb. Matou a guerra, muito obrigado!

1 Curtida

Boa tarde Haroldo. Você tem esse exemplo para a versão 9?

Já está na versão 9.