27/07/2006, 11:55
|
| | Fecha de Ingreso: julio-2006
Mensajes: 24
Antigüedad: 18 años, 5 meses Puntos: 0 | |
tengo este codigo que hace lo que dices
function IsNumeric(valor)
{
var log=valor.length;
var sw="S";
for (x=0; x<log; x++)
{
v1=valor.substr(x,1);
v2 = parseInt(v1);
//Compruebo si es un valor numérico
if (isNaN(v2))
{
sw= "N";
}
}
if (sw=="S")
{return true;}
else
{return false;}
}
var primerslap=false;
var segundoslap=false;
function formateafecha(fecha)
{
var long = fecha.length;
var dia;
var mes;
var ano;
if ((long>=2) && (primerslap==false))
{
dia=fecha.substr(0,2);
if ((IsNumeric(dia)==true) && (dia<=31) && (dia!="00"))
{
fecha=fecha.substr(0,2)+"/"+fecha.substr(3,7); primerslap=true;
}
else
{
fecha=""; primerslap=false;
}
}
else
{
dia=fecha.substr(0,1);
if (IsNumeric(dia)==false)
{
fecha="";
}
if ((long<=2) && (primerslap=true))
{
fecha=fecha.substr(0,1); primerslap=false;
}
}
if ((long>=5) && (segundoslap==false))
{
mes=fecha.substr(3,2);
if ((IsNumeric(mes)==true) &&(mes<=12) && (mes!="00"))
{
fecha=fecha.substr(0,5)+"/"+fecha.substr(6,4); segundoslap=true;
}
else
{
fecha=fecha.substr(0,3);; segundoslap=false;
}
}
else
{
if ((long<=5) && (segundoslap=true))
{
fecha=fecha.substr(0,4); segundoslap=false;
}
}
if (long>=7)
{
ano=fecha.substr(6,4);
if (IsNumeric(ano)==false)
{
fecha=fecha.substr(0,6);
}
else
{
if (long==10)
{
if ((ano==0) || (ano<1900) || (ano>2100))
{
fecha=fecha.substr(0,6);
}
}
}
}
if (long>=10)
{
fecha=fecha.substr(0,10);
dia=fecha.substr(0,2);
mes=fecha.substr(3,2);
ano=fecha.substr(6,4);
// Año no viciesto y es febrero y el dia es mayor a 28
if ( (ano%4 != 0) && (mes ==02) && (dia > 28) )
{
fecha=fecha.substr(0,2)+"/";
}
}
return (fecha);
}
consta de dos funciones pero esta es la que llamas formateafecha(fecha) yo lo hago de la siguiente manera
onkeyup="this.value=formateafecha(this.value);" esta linea va dentro del control que utilices en HTML |