Bom dia turma, tenho o seguinte codigo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<title></title>
</head>
<SCRIPT LANGUAGE="JavaScript" >
function Data(evento, objeto){
var keypress=(window.event)?event.keyCode:evento.which;
campo = eval(objeto);
if (campo.value == '00/00/0000') {
campo.value=""
}
caracteres = '[telefone removido]';
separacao1 = '/';
conjunto1 = 2;
conjunto2 = 5;
conjunto3 = 10;
if ((caracteres.search(String.fromCharCode(keypress))!=-1) && campo.value.length < (19)) {
if (campo.value.length == conjunto1 )
campo.value = campo.value + separacao1;
else if (campo.value.length == conjunto2)
campo.value = campo.value + separacao1;
else if (campo.value.length == conjunto3)
campo.value = campo.value + separacao2;
}
else
event.returnValue = false;
}
function validarData(campo){
var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
var msgErro = 'Formato inválido de data.';
if ((campo.value.match(expReg)) && (campo.value!='')){
var dia = campo.value.substring(0,2);
var mes = campo.value.substring(3,5);
var ano = campo.value.substring(6,10);
if(mes==4 || mes==6 || mes==9 || mes==11 && dia > 30){
alert("Dia incorreto !!! O mês especificado contém no máximo 30 dias.");
campo.focus();
return false;
} else{
if(ano%4!=0 && mes==2 && dia>28){
alert("Data incorreta!! O mês especificado contém no máximo 28 dias.");
campo.focus();
return false;
} else{
if(ano%4==0 && mes==2 && dia>29){
alert("Data incorreta!! O mês especificado contém no máximo 29 dias.");
campo.focus();
return false;
} else{
<!-- alert("Data correta!"); //-->
hoje = new Data();
dataInformada = new Data(campo);
intervalo = hoje - dataInformada;
if ( intervalo > 3 ) {
alert("Data fora do período estabelecido pela empresa.");
data.focus();
return false;
}
return true;
}
}
}
} else {
alert(msgErro);
campo.focus();
return false;
}
}
function validarData2(campo, campo2, campo3, idComp){
var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
var msgErro = 'Formato inválido de data.';
if ((campo.value.match(expReg)) && (campo.value!='')){
var dia = campo.value.substring(0,2);
var mes = campo.value.substring(3,5);
var ano = campo.value.substring(6,10);
if(mes==4 || mes==6 || mes==9 || mes==11 && dia > 30){
alert("Dia incorreto !!! O mês especificado contém no máximo 30 dias.");
campo.focus();
return false;
} else{
if(ano%4!=0 && mes==2 && dia>28){
alert("Data incorreta!! O mês especificado contém no máximo 28 dias.");
campo.focus();
return false;
} else{
if(ano%4==0 && mes==2 && dia>29){
alert("Data incorreta!! O mês especificado contém no máximo 29 dias.");
campo.focus();
return false;
} else{
<!-- alert("Data correta!"); //-->
var dia2 = campo2.substring(0,2);
var mes2 = campo2.substring(3,5);
var ano2 = campo2.substring(6,10);
hoje = new Date(ano2, mes2-1, dia2);
dataInformada = new Date(ano, mes-1, dia);
intervalo = hoje - dataInformada;
diasTol = campo3*24*60*60*1000;
if ( intervalo > diasTol ) {
alert("Data fora do período estabelecido pela empresa.");
document.getElementById(idComp).focus();
return false;
}
return true;
}
}
}
} else {
alert(msgErro);
campo.focus();
return false;
}
}
</SCRIPT>
<body>
<form name="form" id="form">
<input type="text" name="data" maxlength="10" size="9" id="data"
onKeyPress="Data(event, this)" onblur="validarData2(this, '05/10/2007', 3, 'data');">
</form>
</body>
</html>
Se observar o Java Script, em inumeros momentos e setado o focus() para não sair do componente, eu utilizei o focus de duas formas, passando o id e passando o componente direto, no Internet Explorer funciona da duas maneiras, mas no Firefox não. Alguém sabe como fazer?