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:
Não tem um formulário com o name “form_inclusao”
Não tem um input com name “ano” dentro do formulário
Ao validar o formulário outro campo ganha foco depois de executada a funçao “validaAno()”
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();
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.
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;
}
}