Jump to content
Fórum Script Brasil
  • 0

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


Wilson R. Degressi Míccoli

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...