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:
<!DOCTYPE html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=11;text/html;">
<meta charset="UTF-8">
<title>Exemplo</title>
</head>
<body>
<div class="fluig-style-guide">
<form name="form" role="form">
</form>
</div>
<script src="http://10.0.136.71:9090/webdesk/vcXMLRPC.js"></script>
<script>
var beforeMovementOptions = function(numState){
if (/Mobi/.test(navigator.userAgent)) {
var beforeSendValidate = function(numState,nextState){
validateForms_mobile();
}
}else{
window.parent.$("[data-send]").on("click", function(ev) { validateForms(ev); });
}
}
</script>
</body>
</html>
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;