• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

maiden

Validação de formulário

5 mensagens neste tópico

Boas,

Tenho o seguinte formulário de login na minha página

<form name="frmLogin" action="process.php" method="post">
    <p><input type="text" name="Username" id="txtUsername" /><br />
    <input type="Password" name="Password" id="txtPassword" /><br />
    <a href="process.php?action=recpass" title="Recuperar Pass">Recuperar password</a>
    <label for="Lembrar">Lembrar-me</label><input type="checkbox" name="Lembrar" id="chkLembrar" value="lembrar" /><br />
    <input type="submit" name="Login" id="btnLogin" value="Login" /></p>
</form>

Com o código de validação, em Javascript, associado ao evento onSubmit (também já coloquei no onClick do Submit Button)

function validarLogin() {
    error = 0;
    // Validar username
    if (user.value == '' || user.value == 'Username') {
        error += 1;
        userFailMsg = "Insira um username";
    }
    // Validar password
    if (pass.value == '' || pass.value == 'Password') {
        error += 1;
        passFailMsg = "Insira uma password";
    }
    // Verificar se existiram erros, e em que campos
    if (error > 0) {
        errorClass = '<div id="erro"><h2>Falha no Login</h2>';
        if (error == 1) {
    errorClass += userFailMsg;
} else if(error == 2) {
    errorClass += userFailMsg + '<br />' + passFailMsg;
}
    errorClass += '</div>';

    conteudo.innerHTML = errorClass + conteudo.innerHTML;
    window.location.href = 'index.php';
    return false;
}
return true;
}

A função é executada correctamente e vejo o conteúdo na página como pretendia, o problema é que ele redirecciona para a página que tenho definida no action do form. Por isso é que coloquei aqueles return true e false na função JS, mas sem sucesso. Alguém sabe como posso evitar de isto acontecer?

Obrigado desde já.

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Puses-te onsubmit associado ao form ou ao butão? Tem que estar associado ao form e retornar false quando não queres enviar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Meti onSubmit associado ao form, e onClick associado ao botão submit do form (um de cada vez claro).

Edit:

Só que estou a utilizar event handlers (tenho o código javascript apenas num ficheiro .js), não sei se o erro passa por aí. Costumo ver exemplos de pessoal a fazer (sem event handlers) algo deste tipo

<form method="" action="" onSubmit="return funcao()"></form>

e era algo deste tipo que queria fazer, mas sem colocar ali o onSubmit.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pá... é que o javascript está a fazer o bind do evento antes de carregar o elemento. Tens que fazer assim:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">

window.onload=function(){
document.bla.onsubmit=function(){return false;};
}
</script>
</head>

<body>
<form method="post" name="bla" id="bla" action="#">
<input type="submit" name="subm" id="subm" />
</form>
</body>
</html>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já consegui.

window.onload = function() {
getVars();
preencherFormLogin();
addEvent(user, "focus", eliminarUsername);
addEvent(user, "blur", inserirUsername);
addEvent(pass, "focus", eliminarPassword);
addEvent(pass, "blur", inserirPassword);
/*addEvent(loginForm, "submit", "return validarLogin();");*/
loginForm.onsubmit = function() {
	return validarLogin();
}
}

Deve ser algum problema com a função pra adicionar eventos.

Obrigado pela disponibilidade Battousai

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora