pensaba que simplemente validabas el formulario con submit, pero según los problemas que tienes no es así. básicamente lo que pretendes hacer es una mascara de entrada. para lo cual no creo que tengas conocimientos suficientes
te dejo una mascara de entrada para validar una fecha con el propósito de que desistas
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 ) {
valor = valor3[0];
} else if (valor3[2] > 31) {
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>