Foros del Web » Programando para Internet » Javascript »

validar fecha!!!

Estas en el tema de validar fecha!!! en el foro de Javascript en Foros del Web. hola a todos......... Ahora me encuentro con un problema tal vez muy sencillo pero no lo suficiente para mi , estoy validando un input en ...
  #1 (permalink)  
Antiguo 20/11/2008, 11:39
 
Fecha de Ingreso: junio-2008
Mensajes: 44
Antigüedad: 16 años, 5 meses
Puntos: 2
Pregunta validar fecha!!!

hola a todos.........

Ahora me encuentro con un problema tal vez muy sencillo pero no lo suficiente para mi , estoy validando un input en el cual se ingrese la fecha ya tengo mi script pero es para formato dd/mm/aaaa, pero me encuentro trabajando con mysql y el formato es aaaa/mm/dd, me pueden ayudar a modificar mi script o que es lo que puedo hacer???, porque encontre un ejemplo aqui en en el foro pero de hace ya casi 4 años lo probe y no me funcino.

Este es mi script

Código:
<script language="JavaScript">

function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}

function valSep(oTxt){
var bOk = false;
bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
return bOk;
}

function finMes(oTxt){
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
var nRes = 0;
switch (nMes){
case 1: nRes = 31; break;
case 2: nRes = 29; break;
case 3: nRes = 31; break;
case 4: nRes = 30; break;
case 5: nRes = 31; break;
case 6: nRes = 30; break;
case 7: nRes = 31; break;
case 8: nRes = 31; break;
case 9: nRes = 30; break;
case 10: nRes = 31; break;
case 11: nRes = 30; break;
case 12: nRes = 31; break;
}
return nRes;
}

function valDia(oTxt){
var bOk = false;
var nDia = parseInt(oTxt.value.substr(0, 2), 10);
bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
return bOk;
}

function valMes(oTxt){
var bOk = false;
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
bOk = bOk || ((nMes >= 1) && (nMes <= 12));
return bOk;
}

function valAno(oTxt){
var bOk = true;
var nAno = oTxt.value.substr(6);
bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
if (bOk){
for (var i = 0; i < nAno.length; i++){
bOk = bOk && esDigito(nAno.charAt(i));
}
}
return bOk;
}

function valFecha(oTxt){
var bOk = true;
if (oTxt.value != ""){
bOk = bOk && (valSep(oTxt));
bOk = bOk && (valDia(oTxt));
bOk = bOk && (valMes(oTxt));
bOk = bOk && (valAno(oTxt));

if (!bOk){
alert("Fecha inválida");
oTxt.value = "";
oTxt.focus();
}
}
}
</script>

Gracias
  #2 (permalink)  
Antiguo 20/11/2008, 13:05
 
Fecha de Ingreso: junio-2004
Mensajes: 266
Antigüedad: 20 años, 5 meses
Puntos: 8
Respuesta: validar fecha!!!

No entiendo muy bien por cual de los formatos tienes el problema, pero puedes pasar de un formato a otro, o bien lo sacas de mysql en formato que te convenga o construyes desde el php el que metas en MySQL.
__________________
WebSenior
  #3 (permalink)  
Antiguo 20/11/2008, 14:38
 
Fecha de Ingreso: junio-2008
Mensajes: 44
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: validar fecha!!!

ooooo ya parece que ya mas o menos entendi, mi bronca radica cuando lo quiero ingresar en la base de datos entonces tengo que crear en mi pagina php el proceso que la convierta en aaaa/mm/dd para introducirla..... pero no se bien como existe alguna funcion en especial o hay que crear todo???

Gracias
  #4 (permalink)  
Antiguo 21/11/2008, 01:44
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 16 años
Puntos: 66
Respuesta: validar fecha!!!

hola jose luis,
yo, personalmente, utilizo el subtring del valor rescatado, en este caso la fecha y me creo tres variables; para el día, el mes y el año. Luego puedes devolver el valor juntando las tres variables en el orden que quieras. No sé si es la forma mas adecuada pero a mi me resulta mas fácil cuando juego con fechas.

Salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:31.