Como eu não chamo o Servlet?

2 respostas
Murillo_Pontes

Bom dia Pessoal!!

Tenho uma jsp para cadastro de usuario que tem dois campos, senha e confirmação de senha, esta tudo dentro de form com um botão submit. Antes de enviar o formulario eu confirmo se o campo senha e confirmação de senha estão e retorno falso quando nao estão mas mesmo assim o formulario e enviado para o servlet:

<script type="text/javascript">
            function validarConfirmacao(){
                var senha = document.formulario.txtSenha.value;
                var confirmacao = document.formulario.txtConfirmaçãoSenha.value;
                if(senha != confirmacao){
                    alert("confirmacao e senha diferentes")
                    document.seuForm.confirmacao.focus();
                    formulario.onsubmit = function(){return false};
                }
            }
        </script>

no botão submit

<input onclick="validarConfirmacao();" type="submit" value="Gravar" />

e o formulario:

<form name="formulario" action="ServletManutencaoDados" method="POST">
</form>

gostaria de saber o que fazer para interromper a ação de envio para o servlet quando a funcão de verificar senha retornar falso!!!

Obrigado!

2 Respostas

davidbuzatto

É só usar o evento onsubmit do formulário.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Teste</title>
        
        <script type="text/javascript">
        
                function validarConfirmacao() {
                    
                    var senha = document.formulario.txtSenha.value;
                    var confirmacao = document.formulario.txtConfirmaçãoSenha.value;
                    
                    if( senha != confirmacao ){
                        alert("confirmacao e senha diferentes");
                        return false;
                    }
                    
                    return true;
                    
                }
            
        </script>
    
    </head>

    <body>
    
        <form name="formulario" action="ServletManutencaoDados" method="POST" onsubmit="return validarConfirmacao();">
            <!-- outros campos aqui... -->
            <input type="submit" value="Gravar"/>
        </form>
    
    </body>
</html>
[]´s
A

O exemplo acima já deve funcionar, gostaria de esclarecer alguns motivos do seu método não funcionar.

Imagino que esteja usando o firefox pra testar.
Quando dá erros de javascript, o firefox não dá aviso algum, você pensa que está tudo ok.
Acostume-se ao usar o console de erros pra verificar o que está acontecendo (Menu Ferramentas -> Console de Erros)

Um dos seus erros é na linha:

document.seuForm.confirmacao.focus();

O nome do seu form é formulario. Quando tenta acessar seuForm ele não encontrará e dará erro.

Na linha abaixo:

formulario.onsubmit = function(){return false};

Você está chamando diretamente formulario. Essa variável não existe no espaço global. Existe document, que possui a propriedade formulario.
Sempre utilize document.nomeDoForm para acessar o form ou crie uma variável apontado.

Uma última coisa pra ressaltar: Se toda a sintaxe estivesse certa, ainda há um erro em sua lógica.

Você associa ao onsubmit uma função que sempre retorna false. Mas nunca associa uma que retorna true.

Se o usuário errar a confirmação da primeira vez, nunca mais conseguirá fazer submit no form, pois sempre retornará false.

Criado 15 de dezembro de 2010
Ultima resposta 15 de dez. de 2010
Respostas 2
Participantes 3