Código Javascript com erro?

1 resposta
gutopontelo

Caros,
Simplesmente não sei onde está o erro. Aconteceu depois q eu coloquei a função bissexto. O erro está na chamada ou na própria função bissexto. Segue o código:

function verifica_data() { 
	dia = (document.forms[0].dataDe.value.substring(0,2)); 
	barra1 = (document.forms[0].dataDe.value.substring(2,3));
	mes = (document.forms[0].dataDe.value.substring(3,5)); 
	barra2 = (document.forms[0].dataDe.value.substring(5,6));
	ano = (document.forms[0].dataDe.value.substring(6,10)); 

	situacao = ""; 

	if (document.forms[0].dataDe.value.length < 10) {
		situacao = "falsa"; 
	}
	
	if (barra1 != "/" || barra2 != "/") {
		situacao = "falsa";
	}

	switch (mes) {
		case 4 :
		case 6 :
		case 9 :
		case 11:
			numDias = 30;
			break;

		case 2 :
			if (bissexto(ano)) {
				numDias = 29;
			}
			else {
				numDias = 28;
			}
			break;
			
		default:
			numDias = 31;
			break;
	}
	
	if (dia < 0 || dia > numDias) {
		situacao = "falsa"; 
	}

	// verifica se o mes e valido 
	if (mes < 01 || mes > 12 ) { 
		situacao = "falsa"; 
	} 

	if (situacao == "falsa") { 
		alert("Data inválida!"); 
		document.forms[0].dataDe.focus(); 
	} 
	else {
		document.forms[0].submit();
	}
}

function bissexto(ano){
	if ((ano % 4 == 0) && ((ano % 100 != 0) || (ano % 400 == 0))) {
		return true;
	}
	else {
		return false;
	}
}

1 Resposta

gutopontelo

Já resolvi! Erro clássico, rsrsrs. Faltou converter o dia, mes e ano para int antes do switch. Fica aí então um código para validar uma data, consistindo tb anos bissextos. Flw!
Linhas 2 a 6 modifiquei para:

dia = parseInt(document.forms[0].dataDe.value.substring(0,2)); 
	barra1 = (document.forms[0].dataDe.value.substring(2,3));
	mes = parseInt(document.forms[0].dataDe.value.substring(3,5)); 
	barra2 = (document.forms[0].dataDe.value.substring(5,6));
	ano = parseInt(document.forms[0].dataDe.value.substring(6,10));
Criado 4 de março de 2008
Ultima resposta 4 de mar. de 2008
Respostas 1
Participantes 1