Alguém sabe informar como chamar uma função ao clicar na opção ENVIAR do FLUIG?
O formulário valida o campo CPF quando o usuário muda de campo, chamada no formulário através onmouseout. Está funcionando corretamente, porém quando o usuário retorna para acertar o campo, caso digite um código incorreto e clicar direto na opção ENVIAR para avançar o fluxo não passa pela validação novamente e está o dado incorreto.
Esse evento não aparece mesmo, porque não é feito num JS a parte, ele é pra ser implementado no próprio formulário mesmo, você cria uma função exatamente com esse nome e ele vai chamar ao clicar em enviar.
Bom dia Cássia,
eu resolvi parar de utilizar o evento validateForms e comecei a fazer a validação no próprio formulário. Só que para isso funcionar, eu precisei "capturar" o botão enviar e parar a continuação da movimentação de atividade quando algum campo esteja vazio ou incorreto.
Segue um exemplo de como meus formulários funcionam:
function validateForms(ev){
var validate = "validateStep"+stepWF+"();";
if(eval(validate)){
blockPage(); // O formulário recebe uma máscara escura
// Se não validou, impede o evento padrão do botão:
ev.stopImmediatePropagation();
ev.stopPropagation();
ev.preventDefault();
return false;
}
}
Em resumo, existe um if para caso seja versão mobile ou desktop.
Na versão desktop, basta "monitorar" o atributo data-send da janela pai:
window.parent.$("[data-send]")
Já a versão mobile eu usei o evento beforeMovementOptions().
Utilzei essas duas formas pois encontrava alguns BUGs utilizando somente uma ou outra.
E eu paro todo tipo de propagação de evento com o seguinte trecho:
// Se não validou, impede o evento padrão do botão:
ev.stopImmediatePropagation();
ev.stopPropagation();
ev.preventDefault();
return false;
E a função validateForms(ev) eu incluo no Custom, é isso?
Fiz esse procedimento, mas meu botão de enviar continua aparecendo. Uma dúvida no meu caso será necessário executar a função já vinculada no Custom de ValidarCPF.
custom que tu quer dizer, é um arquivo externo .js? por exemplo: scripts.js? Se o custom for um externo, pode sim! Mais o botão enviar não some, ele só é “capturado”
Esse código: window.parent.$("[data-send]").on("click", function(ev) { validateForms(ev); });
ele monitora o botão enviar da plataforma FLUIG que movimenta para outra atividade, ou seja, toda vez que tu clica em enviar a função: validateForms(ev);
é executada. Ai na função validateForms(ev) eu tenho validações (por exemplo o ValidarCPF) que caso retorne false eu executo: // Se não validou, impede o evento padrão do botão: ev.stopImmediatePropagation(); ev.stopPropagation(); ev.preventDefault(); return false;
que, resumindo, para a movimentação de atividade.
function displayFields(form,customHTML){
var mobile = form.getMobile();
customHTML.append("<script>");
customHTML.append(" function getMobile(){ return '" + mobile + "'};");
customHTML.append("</script>");
}
Javascript do formulário:
var beforeSendValidate = function(numState,nextState){
var mobile = getMobile(); // pega da função criada no displayFields
var retorno = true;
if (mobile) {
retorno = validaFormMobile();
} else {
retorno = validaForm();
}
if (!retorno) {
throw("Formulário com dados inválidos!!!");
}
}