Oq tem de errado?

7 respostas
A
function validaAno(ano) {

data = new Date();

if (ano.value > data.getFullYear) {

window.alert(“Ano inválido. Insira um ano menor ou igual ao atual.”);

document.form_inclusao.ano.focus();

return(false);

}

else {

return(true);

}	

}

o focus não volta para o campo qndo a função retorna “false”…oq tem de errado?

7 Respostas

_fs

Esse código está realmente funcionando? É javascript mesmo? Assim fica certo:

data = new Date();
// sem parseInt estava comparando String
// e sem os "()" na chamada de getFullYear
// estava comparando com um objeto Function
if( parseInt( ano.value ) > data.getFullYear() ) {
    window.alert( "Ano inválido. Insira um ano menor ou igual ao atual." );
    document.form_inclusao.ano.focus();
    return false;
}
else {
    return true;
}

Quanto ao campo não ganhar foco, o código está certo, então outra coisa está errada. Possibilidades:

  1. Não tem um formulário com o name “form_inclusao”
  2. Não tem um input com name “ano” dentro do formulário
  3. Ao validar o formulário outro campo ganha foco depois de executada a funçao “validaAno()”
boaglio

allsdragon ,

Crie tópicos com um título mais claro…

Aa postar código use as tags CODE, aí fica assim:

function validaAno(ano) {
data = new Date();
if (ano.value > data.getFullYear) {
window.alert("Ano inválido. Insira um ano menor ou igual ao atual.");
document.form_inclusao.ano.focus();
return(false);
}
else {
return(true);
}
}
Coloque um id=“ano” no campo ANO do seu FORM e

no código troque document.form_inclusao.ano.focus();

por document.getElementById(‘ano’).focus();
A

na chamada do método está assim:

<input type="text" name="anomodelo" maxlength=4 size=4 onBlur="validaAno(this)">
J

Abaixo seguem as alterações a serem feitas:

function validaAno(ano) {
 data = new Date();
 if (eval(ano.value) > data.getFullYear()) {
     window.alert("Ano inválido. Insira um ano menor ou igual ao atual.");
     document.form_inclusao.ano.focus();
     return(false);
 }
 else {
     return(true);
 }
}

Você precisa comparar número com número e getFullYear() é um “método” com retorno.

E evite usar onBlur() isso avacalha a página e pode deixar muito usuário irritado. Use, ou onChange ou, ao clicar no botão salvar, por exemplo, chame uma função genérica que valida todos os campos no formulário.

A

fazendo essas alterações a função não funciona

Pedrosa

Cara tente assim:

function validaAno(ano) {
    data = new Date();
    if (eval(ano.value) > data.getFullYear()) {
       alert("Ano inválido. Insira um ano menor ou igual ao atual.");
       document.forms[0].anomodelo.focus();
       return;
   }
}
J

Vixi, caramba, não percebi o nome do campo que tem o evento onBlur().

Foi mal…

Com a sugestão do Pedrosa agora deve funcionar.

Tenta aí…

Mas preste atenção à mensagem de erro em javascript. Com isso você já deveria ter corrigido o problema.

Criado 18 de abril de 2006
Ultima resposta 20 de abr. de 2006
Respostas 7
Participantes 5