Problema ao pegar número da atividade atual no validateForm

Estou tendo problemas na utilização da função getValue("WKNumState") no validateForm. Quero validar uma parte do meu formulário em uma determinada atividade, o problema acontece na comparação de atividade. Não sei o que acontece exatamente, mas ele simplesmente não consegue verificar qual é a atividade atual.

Minha função atualmente é a seguinte(mesmo se todos os campos estiverem em branco, ele passa para a próxima atividade)


function validateForm(form){
    var msg = " ";
    var numAtividade = parseInt(getValue("WKNumState"));

    if(numAtividade == 0 || numAtividade == 9){
        msg += validateUserSection(form);
        //msg += validateCostSection(form); 
    }
    else if(numAtividade == 5){
        msg += validateApprovalSection(form);
    }

    if(isEmpty(form.getValue("nmTotalGasto")))
        msg += " Total branco."

    if(msg != " ")
        throw msg;
    else
        throw " Msg está vazia"
}

function validateUserSection(form) {
    var _msg = "";
    if(isEmpty(form.getValue("txtNomeCliente"))){
        _msg += " Nome do cliente vazio. Preencha o nome do cliente. \n";
    }

    if(isEmpty(form.getValue("txtNomeProjeto"))){
        _msg += " Nome do projeto vazio. Preencha o nome do projeto. \n";
    }

    if(isEmpty(form.getValue("dtPartida"))){
        _msg += " Preencha a data de partida. \n";
    }

    if(isEmpty(form.getValue("dtChegada"))){
        _msg += " Preencha a data de partida. \n";
    }

    if(isEmpty(form.getValue("zmCoordenadores"))){
        _msg += " Selecione um coordenador. \n";
    }

    if(isEmpty(form.getValue("txtBanco")) || form.getValue("txtBanco").length != 3){
        _msg += " Preencha o codigo do banco corretamente. \n";
    }

    if(isEmpty(form.getValue("txtAgencia")) || form.getValue("txtAgencia").length != 4){
        _msg += " Preencha a agencia do banco corretamente. \n";
    }

    if(isEmpty(form.getValue("txtConta")) || form.getValue("txtConta").length != 6){
        _msg += " Preencha a conta do banco corretamente. \n";
    }

    return _msg;
}

function isEmpty(str){
    return (str == null || !str.trim() || str == "");
}

Sendo que tiro a condição de verificar qual a atividade atual os campos são validados normalmente, o que acaba não me servindo muito pois quero apenas que certos campos sejam validados em certas atividades. Alguém já passou por isso?

@Levy, no log do Fluig não aparece nenhum erro?

@Gabriel, onde que posso olhar o log do fluig?

Painel de Controle → Controle de Log → baixar log do servidor completo

Não tenho muita intimidade com o log, mas não vi nada de anormal até agora. Estou tentando disponibilizar o arquivo, mas não estou conseguindo upar no post.

Coloca ; nas linhas que estão faltando e muda sua função pra assim:


function isEmpty(str){
    return (str == null || str.trim() == "");
}

Gabriel, acabei de verificar aqui e o problema é que o getValue(“WKNumState”) está me retornando null, entretanto ainda não sei como resolver.

Exclui esse evento do seu formulário, exporta, depois cria ele novamente e exporta.

Gabriel, fiz o que você pediu e continuo na mesma situação. Essa validação precisa ser necessariamente no validateField? existe algum outro evento que seja coerente fazer essa validação?

Eu normalmente faço no próprio javascript do formulário, dá uma olhada nesse link: Eventos de Formulário - TOTVS Fluig - TDN

Boa tarde Levy, Aparentemente está correto seu código, mas já tentou tirar o parseInt do getValue? Eu costumo utilizar sem esse parse. Pode ser que esteja gerando algum erro. Abraço!

Olá Kanaãm, tentei retirar o parseInt e, infelizmente, o problema ainda persiste.

Boa tarde,

Concordo com o Kanaãm. Aparentemente o código está certo, apenas esse parseInt está estranho.

As vezes pode estar retornando uma String nesse id e você está fazendo parse pra Int, isso por si só pode dar erro. Aconteceria o mesmo se não tivesse nada dentro desse id e você tentasse fazer um parse. Ao menos se for fazer, tenta verificar com algum Regex se são valores de 0-9 contidos no retorno.

Fora que no seu getValue("WKNumState") você não passa o form. antes

Pode tentar algo do tipo:



var reg = /^\d+$/;
if (reg.test(form.getValue("WKNumState"))) {
    var numAtividade = parseInt(getValue("WKNumState"));

    //resto do codigo
}

Boa tarde Viking, testei sua solução e ele nunca ta entrando no if. Por algum motivo ele retorna null quando pego o valor da variável. :confused:

@Levy nem fazendo um form.getValue(“WKNumState”) ele retorna algo?

Nada ainda. O mais estranho de tudo é que estou usando o getValue(“WKNumState”) no displayFields e está tudo funcionando corretamente. Porém, no validateForms, por algum motivo, está me retornando valor null.

Bom, você tem certeza que está chamando a função passando o form corretamente? Tenta pegar outro ID do mesmo form nessa função ai e veja se o erro acontece também. Se acontecer, é porque tem algo errado ao passar o form pra função… Tenta também colocar “#” antes do id. Se mesmo assim não der certo, tenta pegar direto do document.

Pessoal, tentei de todas as maneiras que me foram sugeridas aqui, mas não nenhuma deu certo. Entretanto, dei um jeito de resolver o problema de uma forma que eu não queria, porém tive de fazer. Uma solução que encontrei foi a seguinte: criei um campo do tipo hidden no formulário e em todo o evento de displayFields eu preenchia esse campo com o valor da atividade atual. Na etapa de validateForm eu apenas pegava o valor desse campo no formulário, com isso passou a funcionar normalmente.

De qualquer forma, gostaria de agradecer a todos que tentaram me ajudar. Muito obrigado!

Bom dia, utilizo da seguinte forma e nunca tive problemas.


function validateForm(form) { var atividade = getValue('WKNumState');

if (atividade == 0 || atividade == 1) {//inicio if (form.getValue("Nome") == null || form.getValue("Nome") == "") { throw "Nome do Colaborador não pode ser vazio."; } } }