Primero, @nexusdata, esforzate un poco más con los enunciados
Cita: mes, año separado pra mayor comodidad de lo que hago no puedo tomarlos juntos separados por barras porque se em complica mas adelante
que mucho no se entiende, ahora una validación de fecha (dia, mes, año) dentro de un form, y que prevenga el envío. Y obviamente que no te vayan a poner fechas como 30 de febrero de 1999, 31 de junio de 2000, etc, se consigue de esta manera
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript"> //<![CDATA[
// creamos los campos dinámicamente
var texto_mes=[null,'Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sept','Oct','Nov','Dic'];
function crear_fecha(campo_dia, campo_mes,campo_anio){
var hoy=new Date();
var a_actual = hoy.getFullYear();
var campo_dia=document.getElementById(campo_dia);
var campo_mes=document.getElementById(campo_mes);
var campo_anio=document.getElementById(campo_anio);
campo_dia.options[0]=new Option('Día', '');
for (var d=1; d<=31; d++){
campo_dia.options[d]=new Option(d, d);
}
campo_mes.options[0]=new Option('Mes', '');
for (var m=1; m<texto_mes.length; m++){
campo_mes.options[m]=new Option(texto_mes[m], m)
}
var e = 0;
// a_actual representa el año actual, si se prefiere se pueden reemplazar los valores porel rango de años que aparecerán en el select
// ejemplo:
// for (var a=1970; a<=2025; a++){
campo_anio.options[0]=new Option('Año', '');
for (var a=1919; a<=a_actual; a++){
e++;
campo_anio.options[e]=new Option(a, a);
}
}// fin función de creación de selects dinámicos
// funciones de validación
function verifica(){
var campo_dia=document.getElementById('dia').value;
var campo_mes=document.getElementById('mes').value;
var campo_anio=document.getElementById('anio').value;
if(fechaValida(campo_anio,campo_mes,campo_dia) == false){
alert('Ingrese una fecha válidad, día, mes y año');
return false;
}else{
alert('Fecha ok, procesando el formulario...');
}
}
function fechaValida(y,m,d){
var fecha = new Date(y,m-1,d);
var convertirFecha = ""+fecha.getFullYear() + (fecha.getMonth()+1) + fecha.getDate();
var fechaDada = "" + y + m + d;
return ( fechaDada == convertirFecha);
}
// llamamos en la carga de página la función que crea los campos
// se le pasa como parámetros los id de los selects que contienen dia, mes y año, en ese mismo orden
window.onload=function(){crear_fecha('dia','mes','anio');}
//]]>
<form method="post" action="x.php" onsubmit="return verifica();"> <select name="anio" id="anio"> <input type="submit" value="guardar datos" name="procesando" />
Poe supuesto, todo esto es a título informativo, ya que una validación en serio, debería llevarase a cabo en el servidor
Demo
http://foros.emprear.com/javascript/...esto_form.html
Saludos