Ir para conteúdo
Fórum Script Brasil
  • 0

Validação dupla em um formulário (duas funções)


Wilson R. Degressi Míccoli

Pergunta

Bom dia a todos.

Sou novo no fórum, e também sou meio leigo (pra não dizer totalmente com Javascript) embora trabalhe com outras linguagens, como PHP e Visual Basic.

Estou com uma situação aqui que está me tirando do sério. Tenho um formulário, com seis objetos, sendo duas text-boxes (uma para nome da pessoa, a segunda para RG da pessoa) e mais quatro option-buttons (ou botões de rádio), alinhados em dois grupos, sendo dois para selecionar forma de pagamento (a vista ou parcelado 1+1) e o banco onde será efetuado o pagamento (Bradesco ou Santander). No caso destes option-buttons, nenhum deles está selecionado. A idéia é que caso nenhum seja selecionado, o formulário não vá pra frente, alertando o usuário na tela que ele tem que escolher uma opção de pagamento e/ou uma opção de banco onde efetuará o pagamento.

O que acontece é o seguinte: ao tentar validar juntos text-boxes e os option-buttons juntos, dá algum erro (na validação dos option-buttons) e o formulário é submetido sem reportar o erro e brecar o processo. Se desativo o script de verificação dos text-boxes, o script dos option-buttons funciona perfeitamente. Tentei mesclar os códigos JavaScript num único script, também sem sucesso.

Pesquisei em vários fóruns como poderia estar colocando uma chamada dupla dos códigos, no código do formulário, porém após pesquisas e tentativas, não funcionou, e fiquei sem opção, tendo que vir abrir o tópico aqui. Peço desculpas se estiver fazendo isso no local errado ou abrindo tópico duplicado, sei que é um saco pros moderadores do fórum quando acontecem essas situações.

Segue abaixo o código dos Javascripts e o HTML com a respectiva chamada do Form:

<html>
<head>
<meta http-equiv="Content-Language" content="pt-br">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Teste de validação de formulário</title>
</head>
<body>
<script language="JavaScript" >
function validaFormPreenchimento(){
    // Valida Nome 01
    if(document.frm_confirma.nome_pessoa1.value=="" || document.frm_confirma.nome_pessoa1.value.length < 8)
        {
        alert( "Preencha o NOME COMPLETO da pessoa, campo obrigatório!" );
        document.frm_confirma.nome_pessoa1.focus();
        return false;
    }

    // Valida RG Pessoa 01
    if(document.frm_confirma.rg_pessoa1.value=="" || document.frm_confirma.rg_pessoa1.value.length < 5)
        {
        alert( "Digite o RG exato da pessoa, incluindo órgão emissor." );
        document.frm_confirma.rg_pessoa1.focus();
        return false;
    }
    
    return true;
}
</script>
<script>
function validaFormOpcoes(nform) {
    // Valida se foi selecionada uma opção de PARCELAMENTO
    marcado = -1
    for (i=0; i<nform.opt_parcelamento.length; i++) {
        if (nform.opt_parcelamento[i].checked) {
            marcado = i
            resposta = nform.opt_parcelamento[i].value
        }
    }

    if (marcado == -1) {
        alert("É necessário que você ESCOLHA UMA OPÇÃO DE PARCELAMENTO dentre as existentes, para finalizar sua reserva.");
        nform.opt_parcelamento[0].focus();
        return false;
    }

    // Valida se foi selecionado um BANCO onde será efetuado o pagamento
    marcado1 = -1
    for (i=0; i<nform.opt_banco.length; i++) {
        if (nform.opt_banco[i].checked) {
            marcado1 = i
            resposta1 = nform.opt_banco[i].value
        }
    }

    if (marcado1 == -1) {
        alert("É necessário que você ESCOLHA UMA OPÇÃO DE BANCO para efetuar o seu(s) pagamento(s), antes de finalizar a compra. Você receberá os dados de pagamento para este banco, então selecione o que lhe for mais conveniente.");
        nform.opt_banco[0].focus();
        return false;
    }
    return true;
}
</script>
</body>
<form action="página_destino.htm" method="POST" name="frm_confirma" id="frm_confirma" onSubmit="return validaFormPreenchimento(); return validaFormOpcoes(this);">
<p>Nome da Pessoa: <input type="text" name="nome_pessoa1" size="20"></p>
<p>Rg: <input type="text" name="rg_pessoa1" size="20"></p>
<p>&nbsp;</p>
<p><input type="radio" value="A vista" name="opt_parcelamento">Pagamento a Vista</p>
<p><input type="radio" name="opt_parcelamento" value="V2">Pagamento 1x + 1x</p>
<p>&nbsp;</p>
<p><input type="radio" name="opt_banco" value="bradesco"> Banco Bradesco</p>
<p><input type="radio" name="opt_banco" value="santander"> Banco Santander</p>
<p><button name="B1" type="submit">Enviar</button></p>
<p>&nbsp;</p>
</form>
</html>

Agradeço quem puder me dar uma luz nisso...

Abraços e bom domingo.

Wilson

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Seu javascript está correto, seu formulário que não está.

Ao invés de

onSubmit="return validaFormPreenchimento(); return validaFormOpcoes(this);
Você deve usar
onSubmit="return validaFormPreenchimento() && validaFormOpcoes(this);

Que, se você parar pra pensar, faz muito mais sentido xD

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...