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:
[code]
[/code]
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!
É só usar o evento onsubmit do formulário.
[code]
<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>
[/code]
[]´s
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.