Validar Fecha mm/dd/yyyy

Debo validar que el usuario digite la fecha en formato mm/dd/yyyy ya que estoy trabajando con SqlServer.

1 Respuesta

Respuesta
1
Algo que puedes hacer para controlar las fechas es poner tres campos.
El de los días que sea un select con 31 días.
El de los meses otro select con los doce meses.
El del año otro select con años desde el 2005 hasta el 2020, por ejemplo...
Así, cuando recibas los tres campos puedes construir la fecha como concatenación de los tres valores.
¿Te puede valer así o necesitas que sea sólo un campo?
Es que el usuario dice que prefiere escribirlo que ponerse a seleccionar tres listas, entonces solo me serviría que fuera un solo campo.
Agradezco la ayuda que me puedas brindar.
Cordial Saludo.
Mirando el código que me sugeriste, lo copie y lo puse en un formulario de esta manera pero no hace nada, se que debo tener mal en el evento onchange del text fecha pero no he podido hacerlo bien.
<form name="form1" method="post" action="">
<table width="24%" border="1">
<tr>
<td width="30%"><input name="fecha" type="text" id="fecha" onChange="validar(document.forms.form1.fecha.value)"></td>
</tr>
<tr>
<td><input type="text" name="textfield2"></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</form>
y por supuesto en el codigo javascript coloque <script language="JavaScript">
.......
</script>
Agradezco la ayuda que me has brindado.
Si escribe algo como:
mm/dd/yyyy
puedes acer algo asi:
function validar(fecha){
var ar = fecha.split("/");
if(!isNumber(ar[0])){
alert('el dia esta mal');
return false;
}
if(!isNumber(ar[1])){
alert('el mes esta mal');
return false;
}
if(!isNumber(ar[2])){
alert('el año esta mal');
return false;
}
return true;
}
El método split te trocea la fecha por el carácter "/" y pone ls trozos en un array.
Después miras si es un numero y si no lo es, pones un alert y retornas falso. Si llegas al final es que todo ha ido bien y retornas verdadero.
Saludos.
Me puedes decir que manual es bueno o en que página puedo bajar, es que soy novato en esto de php y javascript; ademas se que debo validar que los días estén entre 1 y 31 ...; revisando el código que me suministraste puedo darme cuenta que la función IsNumber solo arroja un solo número en el caso que lo sea, pero no se como capturar los dos números del día, los dos números del mes y los 4 del año para hacer esa validación.
Agradezco la ayuda que me puedas brindar.
Es cierto que te mira cada numero, pero si pones algo como
1a/2a/122q
Te devuelve error en todo... de modo que lo tienes hecho ya...
Lo de validar aparte las fechas lo puedes hacer después como:
function validar(fecha){
var ar = fecha.split("/");
if(!isNumber(ar[0])){
alert('el dia esta mal');
return false;
}
if(!isNumber(ar[1])){
alert('el mes esta mal');
return false;
}
if(!isNumber(ar[2])){
alert('el año esta mal');
return false;
}
if(0>ar[0]>31){
alert('el dia esta mal');
return false;
}
if(0>ar[1]>12){
alert('el mes esta mal');
return false;
}
if(2005>ar[2]>2010){
alert('el año esta mal');
return false;
}
return true;
}
Espero que te ayude,
Saludos
P.D: Lo mejor para buscar manuales de php, javascript o lo que sea es ir a google... la mayoría son muy parecidos e igual de buenos para principiantes. Si necesitas ayuda con lo que sea preguntame.
Perdona, se me olvido esto:
function isNumber(str){
if(str.length==0)
return false;
numdecs = 0;
for (i = 0; i < str.length; i++){
mychar = str.charAt(i);
if ((mychar >= "0" && mychar <= "9") || mychar == "." ){
if (mychar == ".")
numdecs++;
}else return false;
}
return true;
}
Así ya te lo mira bien.
También puedes mirar, ademas de que sea un numero, si el día es un numero entre 1 y 31, si el mes esta entre 1 y 12 y el año sea un año que cumpla las condiciones que quieras...
Saludos,
Ahora si me valida, pero quisiera que si sale error no dejara pasar el cursor a otro campo hasta que no digite bien la fecha.
Lo hice así pero me lo manda a la barra de direcciones:
<input name="fecha" type="text" id="fecha" onChange="return validar(document.forms.form1.fecha.value);">
Agradezco la ayuda valiosa que me estas brindando.
añade esta linea antes de cada return false:
document.forms.form1.fecha.focus();
:D
No hace falta que en el onchange ponas el return validar(...), sino validar directamente si pones eso del focus...
Bueno, depende de lo que quieras hacer luego... me comentas cualquier cosa, ¿ok?
Saludos.
No me ejecuta eso del focus, lo escribí como me sugeriste:
if(!isNumber(ar[0])){
alert('el dia esta mal');
document.forms.form1.fecha.focus();
return false;
}
y el document.... lo puse antes del alert y tampoco.
Tambien intente con document.form1.fecha.focus(); y tampoco
Le doy tab y me sale el mensaje de error pero el cursor se sitúa en el siguiente campo de texto y no en el de fecha.
Agradezco la ayuda que me has brindado.
La verdad es que de ambas formas debiera funcionar, pero no lo hace y no se por que (?), no lo entiendo.
Mira como lo hacen aquí, por ejemplo:
http://www.nolimites.net/articulos/index.php/topic,589.0.html
Debería ir bien, ¿no lo entiendo?
Siento no poder ayudarte.
Muchas gracias.
Ya lo solucione
if(event.keyCode==13){if(isValidDate()==false)
{document.forms.form1.txtFechaConsul.focus();}
else{document.forms.form1.txtFinaConsul.focus();}}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas