Olá pessoal!
Tenho uma webaaplication e quero que qd o susuario digitar a data no formato ddmmaa (dia/mes/ano), verifique se a data esta correta.
Fiz este codigo, mas está com erro, alguém sabe o que é?
<p>Data:<input type="text" maxlength="6" OnKeyPress="NumbersOnly();" name="data" size="8" onKeyDown="if(event.keyCode==13) event.keyCode=9;"/>
<%
var dia=0;
var mes=0;
var ano=0;
var datav=0;
for (dia=1;dia<=31;dia++) {
for (mes=1;mes<=12;mes++) {
for (ano=07;ano<=20;ano++) {
if (dia+mes+ano=document.getElementById(data);){
}
else
{
%>
<script type="text/javascript">
alert("DATA INVÁLIDA!");
</script>
<%
}
}
}
}
%>
Grata…
Cris, eu fiz deste jeito, sendo;
public static boolean checkNotTomorrow(int date) {
String data = Integer.toString(date);
boolean result = true;
SimpleDateFormat sdf2 = new SimpleDateFormat();
sdf2.applyPattern(Globals.DATE_PATTERN);
sdf2.setLenient(false);
try {
Date d = sdf2.parse(data);
return checkNotTomorrow(d);
} catch (Exception e) {
result = false;
}
return result;
}
public static final String DATE_PATTERN = “yyyyMMdd”;
Vc pode alterar para ddMMyyy
Cris, espero ter ajudado, qualquer dúvida dá um toque, ahh eu estou usando o Struts, este método eu estou usando no formulário…
hummm…vou tentar aqui…Obrigada…
Ahhh só não entendi uma coisa nessa public que vc fez ele compara a data que o usuário fez com uma função de data do java (SimpleDateFormat())?
Pessoal da uma olhada nessa function para mim, só retorna que a data é inválida, mesmo quando coloco uma data válida 020409(ddmmaa).
<p>Data:<input type="text" maxlength="6" onBlur="VerificaData(this.value);" OnKeyPress="NumbersOnly();" name="data" size="8" onKeyDown="if(event.keyCode==13) event.keyCode=9;"/>
<script language="JavaScript">
//VALIDAÇÃO DA DATA
function VerificaData(digData)
{
var bissexto = 0;
var data = digData;
var tam = data.length;
if (tam == 6)
{
var dia = data.substr(0,2)
var mes = data.substr(3,2)
var ano = data.substr(6,4)
if ((ano > 00)||(ano < 40))
{
switch (mes)
{
case '01':
case '03':
case '05':
case '07':
case '08':
case '10':
case '12':
if (dia <= 31)
{
return true;
}
break
case '04':
case '06':
case '09':
case '11':
if (dia <= 30)
{
return true;
}
break
case '02':
/* Validando ano Bissexto / fevereiro / dia */
if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0))
{
bissexto = 1;
}
if ((bissexto == 1) && (dia <= 29))
{
return true;
}
if ((bissexto != 1) && (dia <= 28))
{
return true;
}
break
}
}
alert("A Data é válida!");
}
alert("A Data "+data+" é inválida!");
document.getElementById("data").focus();
return false;
}
</script>
Alguém sabe ql o problema?
Cris, observei um possível equivoco na sua função substr confira se eh isso:
var dia = data.substr(0,2)
var mes = data.substr(2,4)
var ano = data.substr(4,6)
Prq vc nao usa a função split(); semelhante ao Java …
var dia = data.substr(0,2)
var mes = data.substr(3,2)
var ano = data.substr(6,4)
Faça isso
var arrayData = new Array(3);
arrayData = data.split("/");
document.write("Dia "+arrayData[0]);
document.write("Mes "+arrayData[1]);
document.write("Ano "+arrayData[2]);
Show de bola… Essa nao eu conhecia ramilani12…
[quote=ramilani12]Prq vc nao usa a função split(); semelhante ao Java …
var dia = data.substr(0,2)
var mes = data.substr(3,2)
var ano = data.substr(6,4)
Faça isso
var arrayData = new Array(3);
arrayData = data.split("/");
document.write("Dia "+arrayData[0]);
document.write("Mes "+arrayData[1]);
document.write("Ano "+arrayData[2]);
[/quote]
Vlw Romilani e Caio, deu certinho… 
<p>Data:<input type="text" maxlength="10" onBlur="VerificaData(this.value);" name="data" size="8" onKeyDown="if(event.keyCode==13) event.keyCode=9;"/>
<script language="JavaScript">
//VALIDAÇÃO DA DATA
function VerificaData(digData)
{
var bissexto = 0;
var data = digData;
var tam = data.length;
if (tam == 10)
{
var arrayData = new Array(3);
arrayData = data.split("/");
if ((arrayData[2] >= 2006)&&(arrayData[2] <= 3001))
{
switch (arrayData[1])
{
case '01':
case '03':
case '05':
case '07':
case '08':
case '10':
case '12':
if (arrayData[0] <= 31)
{
return true;
}
break
case '04':
case '06':
case '09':
case '11':
if (arrayData[0] <= 30)
{
return true;
}
break
case '02':
/* Validando ano Bissexto / fevereiro / dia */
if ((arrayData[2] % 4 == 0) || (ano % arrayData[2] == 0) || (arrayData[2] % 400 == 0))
{
bissexto = 1;
}
if ((bissexto == 1) && (arrayData[2] <= 29))
{
return true;
}
if ((bissexto != 1) && (arrayData[2] <= 28))
{
return true;
}
break
}
}
}
alert("A Data "+data+" é inválida!");
document.getElementById("data").focus();
return false;
}
</script>