hay algo que se me escapa, o esto está mal enfocado. en primer lugar, cualquier validación seria debería hacerse con php, a lo suno usar ajax+php para mejorar la experiencia del usuario, en segundo, si el objetivo final es cargar esos datos en una bd, no le veo sentido a crear una nueva variable en javascript, cuando con los $_POST para dia, mes y año podés construir el formato que desees
Código PHP:
Ver original<form action="#" id="validar_fecha">
<label for="nombre">Nombre </label> <input type="text" id="nombre" value="" name="nombre" />
<p>Fecha de nacimiento</p>
<p>
<select name="dia" id="dia">
<option value="">día</option>
<?php for ($i = 1; $i <= 31 ; $i++) { ?>
<option value="<?php echo $i; ?>"><?php echo $i; ?></option>
<?php } ?>
</select>
<select name="mes" id="mes">
<option value="">mes</option>
<?php for ($i = 1; $i <= 12 ; $i++) { ?>
<option value="<?php echo $i; ?>"><?php echo $i; ?></option>
<?php } ?>
</select>
<select name="anio" id="anio">
<option value="">año</option>
<?php for ($i = 1920; $i <= 2011 ; $i++) { ?>
<option value="<?php echo $i; ?>"><?php echo $i; ?></option>
<?php } ?>
</select>
</p>
y en el php que procesa
Código PHP:
Ver original$dia = $_POST['dia'];
$mes = $_POST['mes'];
$anio = $_POST['anio'];
$fecha_nacimiento = "$dia/$mes/$anio"; //creas una cadena segun el criterio deseado
Finalmente, para validar fechas de nacimiento, no olvides el problema que representan loa años bisiestos
Código PHP:
Ver original<?php
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$anio = $_POST['anio'];
$validar = validarFecha($dia, $mes, $anio);
if($validar !== false){
$fecha_nacimiento = "$dia/$mes/$anio";
}else{
// error
}
function validarFecha($dia, $mes, $anio){
if ($dia<0 || $dia>31 || $mes<0 || $mes >12)
$valida=false;
else
if (($mes==4 || $mes==6 || $mes==9 || $mes==11) && $dia > 30)
$valida=false;
else
if ($mes==2 && $dia>28+bisiesto($anio))
$valida=false;
else
$valida=true;
return $valida;
}
function bisiesto($anio){
if ($anio%4!=0)
$bisiesto=false;
else
if ($anio%400==0)
$bisiesto=true;
else
if ($anio%100==0)
$bisiesto=false;
else
$bisiesto=true;
return $bisiesto;
}
?>
Saludos