Oq tem de errado?

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?

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()”

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();

na chamada do método está assim:

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

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.

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

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;
   }
}

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.