la manera mas adecuada de modificar el dom para añadir nuevos elementos es el método createElement()
una vez dicho esto, vamos al asusto que ocupa
para poder validar el formato de la fecha necesitas
- un evento
- un método asociado a expresiones regulares
pero es su lugar puedes usar una mascara de entrada que valide que tanto el formato como la fecha son validas
Cita: <!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script type="text/javascript">
var patron = new Array(4,2,2)
function fnc(elem,separador,pat,numerico) {
if(elem.valoranterior != elem.value) {
valor = elem.value;
largo = valor.length;
valor = valor.split(separador);
valor2 = "";
for(i=0; i<valor.length; i++) {
valor2 += valor[i];
}
if(numerico){
for(j=0; j<valor2.length; j++){
if(isNaN(valor2.charAt(j))){
letra = new RegExp(valor2.charAt(j),"g");
valor2 = valor2.replace(letra,"");
}
}
}
valor = "";
valor3 = new Array();
for(n=0; n<pat.length; n++) {
valor3[n] = valor2.substring(0,pat[n]);
valor2 = valor2.substr(pat[n]);
}
for(q=0; q<valor3.length; q++) {
if(q == 0) {
valor = valor3[q];
}else{
if(valor3[q] != "") {
if (valor3[1] > 12) { // error. un año no tiene tantos meses
valor = valor3[0];
} else if (valor3[2] > 31) { // error. un mes no tiene tantos días
valor = valor3[0] + separador + valor3[1];
} else if ((valor3[1] == 04 || valor3[1] == 06 || valor3[1] == 09 || valor3[1] == 11) && valor3[2] >= 31) { // error. el mes no tiene tantos días
valor = valor3[0] + separador + valor3[1];
} else if (valor3[1] == 02 && valor3[2] >= 30) { // error. el mes no tiene tantos días
valor = valor3[0] + separador + valor3[1];
} else if (valor3[1] == 02 && valor3[2] >= 29 && valor3[0] % 4 != 0) { // error. no es un año bisiesto
valor = valor3[0] + separador + valor3[1];
}else{
valor += separador + valor3[q];
}
}
}
}
elem.value = valor;
elem.valoranterior = valor;
}
}
</script>
</head>
<body>
<form>
<h1>Valida una fecha yyyy-mm-dd</h1>
<input type="text" name="fecha" id= "fecha" onkeyup="fnc(this,'-',patron,true)" maxlength="10" />
</form>
</body>
</html>