Popup de Confirmação

Bom dia Pessoal!

Tenho um Evento Ajax em um campo, quero que ao executar este evento abra um popup de confirmação “Sim/Não” e se o usuário escolher Sim continua o processamento do evento e se escolher Não interrompe o processamento evento.
Observação, independente da escolha não pode dar reload, recarregar ou redirecionar o form.

Alguém pode me ajudar?

1 Curtida

sc_ajax_message, veja no webhelp

Boa tarde Haroldo!
Conseguir fazer todos os parâmetros funcionar, porem o que eu preciso que é fazer aparecer dois botões “ok” e “Cancelar” não consegui, onde o botão ok segue com a execução e o cancelar interrompe a execução.
Se você puder me dar uma luz te agradeço muito.

a macro sc_alert tem todos os parâmetros de sweetalert2.
https://www.scriptcase.com.br/docs/pt_br/v9/manual/14-macros/02-macros/#sc_alert

Você cria um campo do tipo checkbox (depois esconde ele) joga o código que deseja escutar nele.
no sweetalert vc desvia para o evento onclick desse campo

Haroldo,
Eu consegui fazer aparecer os botões “Ok” e “Cancelar” utilizando “sc_alert” porem não encontrei como fazer o desvio para o evento onclick desse campo no sweetalert.

Obrigado mais um vez…

da uma olhada nos parmetros no sweetalert2.

ok, vou dar uma olhada.

obrigado

Haroldo,

Já vi todos os parâmetros do SweetAlert2 e tentar usá-los no scriptcase mas não consigo porque o que preciso é a mesma coisa do colega fazer uma pergunta com o sc_alert ou mesmo sc_ajax_message e executar um determinada função em uma grid por exemplo para excluir um registro de uma grid colocando um campo virtual e quando clickar no mesmo fazer uma pergunta e se se confirmada excluir do banco e atualizar a grid.

Boa noite Ronaldo!
O que você está querendo já é nativo do SC e funciona muito bem.

A minha necessidade é porque como vou utilizar esse recurso no mobile e com rolagem infinita ai a gente vai rolando a grid e a barra de ferramentas rola junto ai o usuário vai excluir um registro muito abaixo e ele vai ter que rolar a tela novamente para cima para chegar na barra de ferramentas e clikar no botão a minha ideia é criar um coluna virtual e colocar um icone nela e disparar um evento onclick e quando clikar no mesmo faz a pergunta se quer mesmo excluir e processa uma rotina HP e da um resfresh na grid.

para aparecer a mensagem de confirmação preencha este campo.

Referente a:
"a minha ideia é criar um coluna virtual e colocar um icone nela e disparar um evento onclick e quando clikar no mesmo faz a pergunta se quer mesmo excluir e processa uma rotina HP e da um resfresh na grid."
é simples fazer, amanha te mando um exemplo…

Obrigado! Fico aguardando o seu exemplo!

E ai amigo conseguiu fazer o exemplo?

Vamos lá.

O Scriptcase não oferece essa opção originalmente então temos que aprender alguns recursos avançados.

São eles:

  • Inserir Javascript em uma app grid.
  • Aprender a usar Ajax.
  • Conhecer a sintaxe do SweetAlert2.
  1. Na app grid que deseja a ação de confirmação em linha:
  • Criar um campo virtual com nome : actions.
  • Criar um botão php com nome : acao.
  1. No evento php do botão acao: (aqui simulo uma exclusão de registro apresentando apenas a query a ser executada, pode ser qualquer instrução).
echo "DELETE FROM especialidades WHERE id = {$_SESSION['param']}";
unset($_SESSION['param']);
//sc_exit(ref);  //descomentar para remover botão OK após processamewnto.
  1. Evento onScriptInit:
    Aqui vamos inserir um arquivo js na aplicação, essa é a forma correta para inserir javascript na consulta. O arquivo vem de uma biblioteca externa.
    Em seguida escondemos o botão acao da barra de ferramentas da aplicação.
    Alguns usam códigos javascript nos eventos footer, header, mas não é uma boa prática.
$js=sc_url_library('sys','actions-master','js/func.js');
?><script src="<?php echo $js; ?>"></script><?php
sc_btn_display('acao',off);
  1. Evento onRecord:
    Guardamos o caminho do script ajax.php em uma variável que será executado em ajax na ação do click no campo. Nessa ação ajax passaremos o id do registro da linha, onde o script php vai jogar em sessão php esse valor para ser capturado no evento php do botão ação. O ajax vai passar parâmetros via post e de forma sincrona, ou seja somente executa próxima função js após o retorno do ajax com sucesso.
    Na ação onclick após executar o script ajax outra função javascript é executada, essa agora, responsável pela mensagem de confirmação baseada no SweetAlert (sweetalert deve estar habilitado na aplicação e para versões do SC que não permite usar o SweetAlert2, se faz necessário a inserção manual da biblioteca através de bibliotecas externas.
    Em seguida jogaremos o código html dentro do campo virtual actions para criar uma imagem baseada na fonte Awesome.
$ajax = sc_url_library('sys','actions-master','php/ajax.php');

{action} = "<a href=# onclick=\"ajax('$ajax',{{id}}); sa2Confirm('Confirme Exclusão?','Atenção','Excluir','OPS!');\"><span style=\"font-size: 1em; color: Tomato;\"><i class=\"fas fa-trash-alt style=color:red\"></i></span></a>";
  1. Vamos agora as bibliotecas externas:
    Criar uma biblioteca externa do tipo pública (assim vc reaproveita em outros projetos) com nome ‘actions-master’.
    Criar 2 sub-diretórios com os nomes js e php.

5.1. Na sub-pasta js, criar arquivo func.js com o conteúdo:

function ajax ( script_php , valor )
{
	$.ajax({
            url: script_php,
            type: 'POST',
            data: {param: valor},
            async: false          
	});
}

function sa2Confirm (title, text, confirmBtnText, text2 ) 
{

swal.fire({
  	title: title,
 	text: text,
  	type: 'question',
  	showCancelButton: true,
  	confirmButtonColor: '#3085d6',
  	cancelButtonColor: '#d33',
	cancelButtonText: 'Cancelar',
  	confirmButtonText: confirmBtnText
}).then((result) => {
	if (result.value) {
   		sc_btn_acao();
  	}else{
		swal.fire({
			type: 'warning', 
			title: text2,
			showCloseButton: true,
			timer: 1500
		});
	}
})	
	
}

Acima temos as funções javascript responsáveis pela chamada ajax ao script ajax.php que criaremos em seguida e pela execução da mensagem de confirmação em sweetalert.
Na função ajax passamos como parâmetros o caminho do script ajax.php e o valor que desejamos jogar em sessão.
Na função sa2Confirm, passamos como parâmetros o Título da Mensagem, um sub-título, o label do botão de confirmação, e o texto da mensagem caso o usuário aborte a confirmação.

5.2. Na pasta php, criar um arquivo com o nome ajax.php com o código a seguir:

<?php
session_start();
if($_POST)
{
	foreach ($_POST as $key => $value)
	{
		$_SESSION[$key]=$value;
	}
}

Esse responsável em receber o parâmetro via POST e salvar em sessão.

Pronto, dessa forma obtemos uma mensagem no click da ação em linha que se confirmado executa o evento do botão php acao.
No evento ajax podemos passar uma parâmetro no formato json, obtendo assim diversos valores no evento do botão php onde você pode criticar a ação executando diferentes procedimentos.

Testando na prática:

TAGS: HAROLDO, GRID, CONSULTA, CONFIRMAÇÃO, MENSAGEM, SWEETAERT2


2 Curtidas

Muito boa dia. Obrigado por compartilhar.

1 Curtida

Vou estar implantando e testando!
Obrigado Mestre Haroldo (@InfinitusWeb) pelo tempo dispendido em explicar tão bem detalhado!
TFA

1 Curtida

Obtendo sucesso ou não, dê um retorno aqui.

Segui o passo a passo e deu tudo certo!
Já funcionando…
Obrigado!

1 Curtida

Ficou Show de bola! Parabéns Haroldo!!

1 Curtida